【发布时间】:2012-10-18 01:46:05
【问题描述】:
我在我的应用程序中使用了 NSURLConnection(异步),它在 wifi(iOS5 和 iOS6)上运行良好。但它与 3G 产生了问题。当我运行我的应用程序 3G 连接时,我的 didReceiveData 方法中没有得到任何数据。
我已将日志放入我的委托方法中,但在使用 3G 时,请求超时。可能是什么问题。
编辑: 在服务器端 -> 显示我的请求已发送到服务器,服务器也已将响应发送到客户端。
编辑 2:
我写的代码如下。
NSURL *url = [NSURL URLWithString:@"someURL"];
NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:40.0];
//[req setHTTPShouldUsePipelining:YES];
[req setValue:@"x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[req setValue:@"someValue" forHTTPHeaderField:@"Accept"];
[req setValue:@"myCrdentails" forHTTPHeaderField:@"Authorization"];
[req setHTTPMethod:@"GET"];
[[NSURLConnection alloc] initWithRequest:req delegate:self startImmediately:YES];
响应头如下
< HTTP/1.1 200 OK
< X-Powered-By: Express
< Access-Control-Allow-Origin: *
< Content-Type: text/event-stream; charset=utf-8
< Connection: keep-alive
< Transfer-Encoding: chunked
【问题讨论】:
-
更重要的是,
connectionDidFinishLoading:或didFailWithError:被解雇了吗? -
是的,在我的超时间隔 (40.0 - 120.0) 之后 didFailWithError 被调用
-
说得有道理,这是苹果工程师提出的一些建议:stackoverflow.com/a/12726729/792677
-
谢谢,但没有成功。我已经尝试过两个不同的网络运营商,服务器端也使用 HTTP 1.1。尝试了 HTTPShouldUsePipelining,但没有结果。问题依然存在
标签: iphone nsurlconnection 3g-network