【问题标题】:Getting Request Timed Out - ASIHTTPRequest - code provided获取请求超时 - ASIHTTPRequest - 提供的代码
【发布时间】:2012-02-19 15:33:54
【问题描述】:

大多数情况下,我以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];

【问题讨论】:

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


    【解决方案1】:

    Request timed out 通常意味着它所说的:您尝试从中获取数据的服务器响应时间过长,并且您的请求已终止(我假设您发布的 URL 不是您的 URL)正在尝试到达)。

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

    [ASIHTTPRequest setDefaultTimeOutSeconds:30]
    

    也许可以尝试通过电话以外的其他方式处理您的请求,以查看它们需要多长时间,并更清楚地了解问题所在。

    【讨论】:

    • 嗯,这不是实际的 URL :)。当我将 URL 粘贴到浏览器窗口中时,它会立即显示(不到 1 秒)。我的代码做错了吗?
    • 不,您发布的代码中没有任何不正确的地方。尝试通过移动 safari 访问 URL 以缩小范围:如果它加载在那里,您知道这是您的应用程序的问题,如果不知道这是您设备所在的网络的问题。
    【解决方案2】:

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

    【讨论】:

    • 我认为 ASIHTTPRequest 使用的是流而不是 HTTP POST/GET。
    猜你喜欢
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多