这个 HTTP 调用似乎挂起,我不明白为什么。调用后的日志记录行永远不会运行。
我几乎可以肯定在做一些非常愚蠢的事情,但如果有人能发现它是什么,我将不胜感激。据我所知,我的代码等同于文档。
我使用什么 URL 似乎并不重要,并且服务器永远不会记录 HTTP 请求(如果指向一个)。
NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]];
NSURLResponse *res = nil;
NSError *err = nil;
NSLog(@"About to send req %@",req.URL);
NSData *data = [NSURLConnection sendSynchronousRequest:req returningResponse:&res error:&err];
NSLog(@"this never runs");
有任何想法吗?
更新
感谢到目前为止发布的所有人。还是看到了问题。更详细一点:
- 代码正在设备上测试
- 其他 HTTP 调用工作正常,所以如果它是一个网络问题,它是一个不平凡的
- 代码已经超过了正常的超时时间。我知道它会挂起超过 20 分钟。我当时杀了它,但我认为它会继续挂起。
- 我目前没有使用委托,也不打算使用,见下文。
- 在我使用的应用程序的其他地方,
sendAynchronousRequest
但在这种情况下,我需要传递一个返回值(而且我不在主线程上),所以这sendSynchronousRequest
是我所知道的唯一选项。 - 万一这很重要,上下文是我正在实现
NSURLCache
协议,特别是cachedResponseForRequest
方法,这需要我返回一个NSCachedURLResponse