ios下表单post使用gzip模式

使用afnetworking,服务器参考的这里

ios端,使用自己的序列化类

manager.requestSerializer = [MyHttpRequestSerializer new];[manager.requestSerializer setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"];[manager.requestSerializer setValue:@"gzip" forHTTPHeaderField:@"Content-Encoding"];

h文件

#import <Foundation/Foundation.h>
#import "AFURLRequestSerialization.h"

@interface MyHttpRequestSerializer : AFHTTPRequestSerializer

@end

关键代码,参考AFJSONRequestSerializer

@implementation MyHttpRequestSerializer

- (nullable NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request
                                        withParameters:(nullable id)parameters
                                                 error:(NSError * _Nullable __autoreleasing *)error NS_SWIFT_NOTHROW{

    NSParameterAssert(request);

    if ([self.HTTPMethodsEncodingParametersInURI containsObject:[[request HTTPMethod] uppercaseString]]) {
        return [super requestBySerializingRequest:request withParameters:parameters error:error];
    }

    NSMutableURLRequest *mutableRequest = [request mutableCopy];

    [self.HTTPRequestHeaders enumerateKeysAndObjectsUsingBlock:^(id field, id value, BOOL * __unused stop) {
        if (![request valueForHTTPHeaderField:field]) {
            [mutableRequest setValue:value forHTTPHeaderField:field];
        }
    }];

    if (parameters) {
        if (![mutableRequest valueForHTTPHeaderField:@"Content-Type"]) {
            [mutableRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        }

        NSData* data = [NSJSONSerialization dataWithJSONObject:parameters options:(NSJSONWritingOptions)0 error:nil];
        NSData* zippeddata = [LFCGzipUtillity gzipData:data];
        [mutableRequest setHTTPBody:zippeddata];
    }

    return mutableRequest;
}

@end

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008400; background-color: #ffffff }

原文地址:https://www.cnblogs.com/ziyouchutuwenwu/p/9019962.html

时间: 2024-08-30 13:58:26

ios下表单post使用gzip模式的相关文章

ios下表单disabled样式重置

在做最近的一个活动项目时,需要用到表单的disabled状态,但是在IOS下那颜色不是一般的浅,就跟没有一样,一开始通过如下样式重置: input:disabled, input[disabled]{ color: #8d9399; } 发现在IOS下根本不起作用,后来网上搜索了解到,ipad/iphone改变的其实是颜色或背景的透明度,将其复写即可,完整重置代码如下: input:disabled, input[disabled]{ color: #8d9399; -webkit-text-f

jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)(转)

版权声明]:版权归作者所有,转载时请以超链接形式标明文章原始出处和作者信息及本声明:http://www.open-lib.com/Forum/Read_69_1.action 前言: 当jquery ajax在utf-8编码下(页面utf-8,接收utf-8),无任何问题.可以正常post.get,处理页面直接获取正确的内容. 但在以下情况下: GBK -> AJAX POST ->GBK UTF-8 -> AJAX POST ->GBK 后台代码无法获取正确的内容,通常表现为获

动态表单构建器——建造者模式

在编写一个弹出框时,它可以包含确定按钮,取消按钮,标题栏,关闭按钮,最小化按钮,内容,最大化按钮等内容,但这些内容在不同的需求下又不是必须存在的,不同的需求需要对这些组件自由组合,显然每次组合都要重复编码.将这些不同的,容易变动的组件分离开来,通过一个Builder类一步一步的构造复杂的对象,这就是建造者模式. 下面的例子是通过设计一个表单构造器来演示建造者模式.现在流行的Hybrid App的开发网络请求基本都是通过Ajax实现,设想一下如果应用要求根据不同的用户角色来提交不同的表单,那么我们

spring mvc在注解开发下表单提交到不了Controller方法的解决手段

这个问题很诡异,不太懂为什么,但是知道如何解决,如果知道为什么的话希望能评论我下! 表单提交代码如下: <form class="form clearfix" action="${website}register" method="post"> <h1 class="title">智能码控门禁系统<span class="in">注册</span >/<

ios上表单默认样式

摘自:http://blog.sina.com.cn/s/blog_7d796c0d0102uyd2.html 可惜不能直接转到博客园. input[type="button"], input[type="submit"], input[type="reset"] { -webkit-appearance: none; } textarea {  -webkit-appearance: none;} 去除Chrome等浏览器文本框默认发光边框 i

按下enter键后表单自动提交问题

在HTML的form表单里,按下enter键之后,默认情况下表单会自动提交. 在公司一个项目里,按下enter键自动提交表单的查询结果与按下搜索框的搜索结果页面显示不一样,按下搜索按钮之后是通过Ajax请求返回结果:而按下enter键是直接post请求然后跳转返回一个页面,失去了页面样式及导航等. 一开以为是写了js代码导致按下enter键之后会触发表单提交,后来把js代码全部移除也是一样地按下enter键会触发表单提交.到网上搜索发现是因为默认情况下在form表单内按下enter键会触发表单自

水煮 ASP.NET Web API(1-3)如何接收 HTML 表单请求

问题 我们想创建一个能够处理 HTML 表单的 ASP.NET Web API 应用程序(使用 application/x-www-form-urlencoded 方式提交数据). 解决方案 我们可以创建一个 Controller Action 接收一个 Moddel,Model 的结构和准备从HTML 表单提交的准备处理的结构相似,模型绑定依赖于 ASP.NET Web API 来处理.模型中的属性名字和 HTTP 请求中要用的名字要匹配. public HttpResponseMessage

HTML5表单及其验证

随笔- 15 文章- 1 评论- 115 HTML5表单及其验证 HTML表单一直都是Web的核心技术之一,有了它我们才能在Web上进行各种各样的应用.HTML5 Forms新增了许多新控件及其API,方便我们做更复杂的应用,而不用借助其它Javascript框架,先说下表单的几个基本知识点: 表单仍是以<form>元素作为容器,我们可在其中设置基本的提交特性: 当用户提交页面时,表单仍然向服务器发送表单控件的值: 之前老版本中的表单控件,如text radio checkbox等等,都可以按

教程:让你的表单升级到CSS3和HTML5客户端验证

今天我们一起来看看如何创建一个实用并且功能强大的表单,表单使用如今最热门的技术HTML5和css3来创建,并且可以通过HTML5进行客户端验证. 查看预览下载附件 第一步:策划表单功能 首先,我们得为我们的表单策划一下该有什么功能,用什么形式表现.在这个示例中,我们就制作一个比较简单的留言表单.需要的功能如下: 名称 电子邮件 网站地址 提交按钮 我们都希望用户能够填写正确的信息再提交,要实现这一点,我们可以使用HTML5客户端验证新技术.那怎么样使用这个功能呢?在这里简单的使用服务器验证,不做