如题,应用在WIFI或3g下都可以正常获取到数据,可是切换到edge 2g网络时就发现请求不到数据的情况!查了很久不知道问题在哪里,希望遇到过同样问题的朋友给予解答,谢谢!代码我就不贴了,应为我觉得这可能时我在思路上哪里有问题!

解决方案 »

  1.   

    我用的是asihttprequest,网络肯定的通的,请求也发了,可收到的数据不对!在3g和wifi下收到的数据是正常的
      

  2.   

    在自己仔细的看了AISHTTPREQUEST源代码,明白了,在0.9后的版本支持发送和接受压缩过的数据。在默认的情况下 allowCompressedResponse设置为yes即允许接受压缩数据,那么你的请求头中将增加 一个accept-encoding头。如果响应头中包含了content-encoding头指明你的数据压缩过(看自己服务器是否配置过)。这时就得注意了,默认情况下,ASIHTTPRequest会等到request完成时才解压缩返回的数据。如果你需要对响应数据流进行流处理(例如XML和JSON解析),那么你必须要设置shouldWaitToInflateCompressedResponses 属性为NO,这样你才可以通过实现代理函数request:didReceiveData:来将返回的网络数据一点一点喂给解析器。否则你为的是没有解压缩过的数据,那么解析器自然无法解析出数据。这就是我在wifi和3g下数据解析正常,但用gprs请求时解析不了数据的原因。因为在2g网络下请求我的服务器返回的时压缩过的数据!
      

  3.   

    [ASIHTTPRequest setShouldThrottleBandwidthForWWAN:YES];就可以了。