获取请求超时 - ASIHTTPRequest - 提供的代码

时间:2012-02-19 15:33:54

标签: iphone objective-c cocoa-touch asihttprequest cfnetwork

大部分时间我都在failMethod,我收到错误消息Request timed out和一大堆行话。为什么是这样?有解决方案吗?

我正在使用ASIHTTPRequest

[self setNetworkQueue:[ASINetworkQueue queue]];
[[self networkQueue] setDelegate:self];
[[self networkQueue] setShouldCancelAllRequestsOnFailure:NO];
[[self networkQueue] setRequestDidFinishSelector:@selector(successMethod:)];
[[self networkQueue] setRequestDidFailSelector:@selector(failMethod:)];    
ASIHTTPRequest *r = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:@"http://www.example.com/wenb"]];
[r setUseKeychainPersistence:YES];
[[self networkQueue] addOperation:r];    
[[self networkQueue] go];

2 个答案:

答案 0 :(得分:3)

Request timed out通常意味着它所说的:您尝试获取数据的服务器花了太长时间才能响应,并且您的请求被终止(我假设您发布的网址不是网址你试图达到)。

有两种解决方案:最好,弄清楚为什么你的请求需要很长时间才能完成,因为ASIHTTPRequest默认有10秒的时间,这很长。另一个更简单的选择是将超时增加到30秒,你可以这样做:

[ASIHTTPRequest setDefaultTimeOutSeconds:30]

也许尝试通过手机以外的其他方式运行您的请求,看看他们需要多长时间,并更好地了解问题所在。

答案 1 :(得分:1)

对我而言,这取决于移动运营商。我遇到了同样的问题,我在不同的运营商网络上使用相同的应用进行了测试。在我看来,网络提供商正在使用不同类型的连接(代理)。当您查看手机日志时,您也可以从邮件客户端看到相同的错误。一个解决方案是,使用简单的NSURLConnectionHTTP方法。