Iphone 如何为NSURLConnection请求设置实际超时?
请参阅以下代码:Iphone 如何为NSURLConnection请求设置实际超时?,iphone,nsconnection,Iphone,Nsconnection,请参阅以下代码: NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:<...> cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:3.0]; <...> [NSURLConnection sendSynchronousRequest:request returningResponse:&WSrespons
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:<...> cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:3.0];
<...>
[NSURLConnection sendSynchronousRequest:request returningResponse:&WSresponse error:&WSerror]
NSMutableURLRequest*request=[NSMutableURLRequest requestWithURL:cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:3.0];
[NSURLConnection sendSynchronousRequest:请求返回应答:&WSresponse错误:&WSerror]
下面的代码是从后台线程调用的:
[self performSelectorInBackground:@selector(<...>) withObject:nil];
[self-performSelectorInBackground:@selector(),对象:nil];
有时sendSynchronousRequest的工作时间远远超过3.0秒。(大约1分钟)
timeoutInterval:3.0
NSURLConnection
请求的功能非常感谢你的帮助 超时时间间隔仅描述了连接在超时之前的任何时间点可以空闲的时间量。从Apple文档中: 如果在连接尝试期间,请求保持空闲的时间超过超时时间 间隔,则认为请求已超时 因此,如果您的数据正在检索大量数据,则需要更长的时间
如果您想对“停止侦听”之前的等待时间有更多的控制,那么应该使用异步请求。异步请求也会让用户在等待时看不到冻结?超时时间间隔只是描述了连接在超时之前的任何时间点可以空闲的时间量。从Apple文档中: 如果在连接尝试期间,请求保持空闲的时间超过超时时间 间隔,则认为请求已超时 因此,如果您的数据正在检索大量数据,则需要更长的时间 如果您想对“停止侦听”之前的等待时间有更多的控制,那么应该使用异步请求。异步请求也会使它生效,以便用户在等待时不会看到冻结
您可能想看看ASIHTTPRequest,它以稍微不同的方式包装了一些功能。谢谢您的回答!但我想添加一个取消按钮,随时停止请求。如何执行此操作?您可以在发出请求的NSURLConnection上调用cancel方法(假设您保存了对它的引用)。这将防止将来向您的代理发送任何回调。@Tim Deam-只有在主线程上调用同步IO时,“禁止冻结”注释才有效。在后台线程上,由于大大降低了代码复杂度,因此可以首选同步IO。@PeyloW-我同意您关于从后台线程使用同步表单的评论。基于最初的帖子,我假设它是从主线程调用的。这段代码是从后台线程调用的,而不是从主线程调用的。谢谢你的回答!但我想添加一个取消按钮,随时停止请求。如何执行此操作?您可以在发出请求的NSURLConnection上调用cancel方法(假设您保存了对它的引用)。这将防止将来向您的代理发送任何回调。@Tim Deam-只有在主线程上调用同步IO时,“禁止冻结”注释才有效。在后台线程上,由于大大降低了代码复杂度,因此可以首选同步IO。@PeyloW-我同意您关于从后台线程使用同步表单的评论。基于最初的帖子,我假设它是从主线程调用的。这段代码是从后台线程调用的,而不是从主线程调用的。