ASIHTTPRequest中数据压缩问题与gzip
来源:互联网 发布:算法笔记 胡凡 pdf 编辑:程序博客网 时间:2024/06/06 01:22
最近使用asi发现,部分网络回调数据不能正常的json解析,将responseHeaders头打印出来,才发现公司服务器部分数据添加了gzip压缩传输。
[request
setAllowCompressedResponse
:NO
];
-----------------------------------------------------------------
-----------------------------------------------------------------
使用gzip来处理压缩的响应数据
从0.9版本开始,ASIHTTPRequest会提示服务器它可以接收gzip压缩过的数据。
许多web服务器可以在数据被发送之前压缩这些数据——这可以加快下载速度减少流量使用,但会让服务器的cpu(压缩数据)和客户端(解压数据)付出代价。总的来说,只有特定的几种数据会被压缩——许多二进制格式的文件像jpeg,gif,png,swf和pdf已经压缩过他们的数据了,所以向客户端发送这些数据时不会进行gzip压缩。文本文件例如网页和xml文件会被压缩,因为它们通常有大量的数据冗余。
怎样设置apache的mod_deflate来使用gzip压缩数据
apache 2.x以上版本已经配备了mod_deflate扩展,这使得apache可以透明地压缩特定种类的数据。要开启这个特性,你需要在apache的配置文件中启用mod_deflate。并将mod_deflate命令添加到你的虚拟主机配置或者.htaccess文件中。
在ASIHTTPRequest中使用gzip
- (
IBAction
)grabURL:(
id
)sender
{
NSURL
*url = [
NSURL
URLWithString
:
@
"http://www.cccsee.cn
"
];
ASIHTTPRequest *request = [ASIHTTPRequest
requestWithURL
:url];
// 默认为YES, 你可以设定它为NO来禁用gzip压缩
[request
setAllowCompressedResponse
:
YES
];
[request
startSynchronous
];
BOOL
*dataWasCompressed = [request
isResponseCompressed
];
// 响应是否被gzip压缩过?
NSData
*compressedResponse = [request
rawResponseData
];
// 压缩的数据
NSData
*uncompressedData = [request
responseData
];
// 解压缩后的数据
NSString
*response = [request
responseString
];
// 解压缩后的字符串
}
当allowCompressedResponse 设置为YES时,ASIHTTPRequest将向request中增加一个Accept-Encoding头,表示我们可以接收gzip压缩过的数据。如果响应头中包含一个Content-Encoding头指明数据是压缩过的,那么调用responseData 或者responseString 将会得到解压缩后的数据。你也可以通过调用rawResponseData来获得原始未压缩的数据。
相应数据的实时解压缩
默认情况下,ASIHTTPRequest会等到request完成时才解压缩返回的数据。若设置request的shouldWaitToInflateCompr
如果你需要对响应数据流进行流处理(例如XML和JSON解析),这个特性会很有用。如果启用了这个选项,你可以通过实现代理函数request:didReceiveData:来将返回的网络数据一点一点喂给解析器。
注意,如果shouldWaitToInflateCompr
使用gzip压缩request数据
1.0.3版本的新特性就是gzip压缩request数据。使用这个特性,你可以通过设置shouldCompressRequestBod
apache的mod_deflate可以自动解压缩gzip压缩的请求体(通过合适的设置)。这个方法适用于CGI内容,但不适用于内容过滤器式的模块(例如mod PHP),这种情况下,你就必须自己解压缩数据。
转至 http://blog.sina.com.cn/s/blog_693de6100101nf09.html
- ASIHTTPRequest中数据压缩问题与gzip
- ASIHTTPRequest-数据压缩
- ASIHTTPRequest-数据压缩
- ASIHTTPRequest-数据压缩
- ASIHTTPRequest-数据压缩
- ASIHTTPRequest数据压缩
- ASIHTTPRequest-数据压缩
- 使用ASIHTTPRequest的ASIDataCompressor与ASIDataDecompressor进行gzip压缩与解压缩,出现的问题
- iOS 数据请求 GZip数据压缩和解压缩问题
- iOS开发ASIHTTPRequest数据压缩
- iOS开发ASIHTTPRequest数据压缩
- iOS开发ASIHTTPRequest数据压缩
- GZIP数据压缩/解压工具
- ios开发之ASIHTTPRequest-数据压缩
- iOS开发ASIHTTPRequest数据压缩【7】
- Symbian中的数据压缩(GZIP)
- 关于Web端与Pad数据压缩问题
- iOS开发asi使用(四)ASIHTTPRequest数据压缩
- Android ClipboardManager复制文本
- MongoDB的常用操作
- java 处理date ,Timestamp
- 两道关于二维数组的题, 鞍点,三维数组的深度
- 网格形变算法(Gradient-Based Deformation)
- ASIHTTPRequest中数据压缩问题与gzip
- 4.3
- Toolbar显示菜单问题
- Linux下查看CPU信息[/proc/cpuinfo]
- shell getopts 用法
- bzoj2793.Vouchers(调和级数)
- 将博客搬至博客园
- 新浪微博-表情键盘的事件处理
- Android AsyncTask异步的学习