我正在开发 iPhone 应用程序并手动构建 POST 请求。目前,需要在发送之前压缩 JSON 数据,因此寻找如何告诉服务器内容已压缩。将内容类型 header 设置为 gzip 可能是 Not Acceptable ,因为服务器需要 JSON 数据。我正在寻找透明的解决方案,比如添加一些 header ,告诉 JSON 数据被压缩到 gzip 中。
我知道,标准的方法是告诉服务器客户端接受编码,但是你需要先用接受编码头发出 GET 请求。就我而言,我想发布已经编码的数据。
最佳答案
包括一个 Obj-C gzip 包装器,例如 NSData+GZip
,并使用它来编码您的 NSURLRequest
的主体。还要记住相应地设置 Content-Encoding
,这样网络服务器就会知道如何处理您的请求。
NSData *requestBodyData = [yourData gzippedData];
NSString *postLength = [NSString stringWithFormat:@"%d", requestBodyData.length];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"gzip" forHTTPHeaderField:@"Content-Encoding"];
[request setHTTPBody:requestBodyData];
关于iphone - 如何发送带有压缩内容的 HTTP POST 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10410680/