请查看以下代码:
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:<...> cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:3.0];
<...>
[NSURLConnection sendSynchronousRequest:request returningResponse:&WSresponse error:&WSerror]
此代码从后台线程调用:
[self performSelectorInBackground:@selector(<...>) withObject:nil];
有时sendSynchronousRequest的工作时间超过3.0秒。 (约1分钟)。
timeoutInterval:3.0
?NSURLConnection
请求的功能?非常感谢您的帮助!
答案 0 :(得分:3)
请注意,除了您调用的初始化程序之外,您还可以在NSMutableURLRequest上调用-setTimoutInterval :.超时值确实有效,但忽略任何小于240的值 - 这是iOS框架所遵循的最小值。如果要设置较低的超时值,则唯一的选择是使用异步请求。
如果您想异步取消请求(即在后台执行请求并允许前台UI线程发出取消以响应用户点击取消或停止按钮),那么您必须发出异步URL请求。使用同步请求无法执行此操作。例如,在当前正在执行块时,您甚至无法终止调度队列。
您可能希望查看ASIHTTPRequest,它有点不同地包含了一些此功能。
答案 1 :(得分:2)
超时间隔仅描述连接在超时之前的任何时刻可以空闲的时间。来自Apple文档:
如果在连接尝试期间请求保持空闲的时间超过超时 间隔,请求被认为已超时。
因此,如果您的数据正在检索任何大量数据,则需要更长时间。
如果您希望在“停止收听”之前对等待的时间有更多控制权,那么您应该使用异步请求。异步请求也会使用户在等待时看不到冻结?