iphone - 如何发送带有压缩内容的 HTTP POST 请求?

标签 iphone objective-c http gzip http-post

我正在开发 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/

相关文章:

objective-c - (!object) 和 (object == nil) 之间有区别吗?

iphone - 在 UISplitViewController 上方显示模态视图的最佳实践

iphone - 什么样的绘图技术是合适的?

iphone - 在 iPhone 中动态重绘调整大小的圆圈

iphone - 用于选择器 View iPhone 的 JSON 数组

python - 在特定时间发送 Http 请求

ios - 带有包含自定义单元格的 UITableView 的 UISearchBar => 空白单元格

ios - 如何在小时和分钟上倒数计时器并在它为 0 时停止, objective-c

php - 用户身份验证-安全风险通过 HTTP 传递 session cookie?

ios - 写入服务器中的文件时,作为 HTTP POST 发送的图像被损坏