【问题标题】:Some requests time out with no clear reason一些请求超时,没有明确的原因
【发布时间】:2013-01-24 16:44:57
【问题描述】:

我遇到了一个我无法理解的错误,目前它只发生在特定设备上。它发生在装有 iOS 6 的 iPhone 5 上,但不幸的是,我无法访问另一台来检查它是否与它是 iPhone 5 的事实有关。

问题在于,尽管连接速度很快,但对我们的服务器 API 发出的某些特定网络请求超时,而且似乎没有服务器端问题,因为服务器正常响应来自其他设备的相同请求。

我使用 AFNetworking 发出我的 http 请求。

我已将AFHTTPClient 子类化,对于该特定请求,我会这样使用它

[[MyClient sharedInstance] putPath:@"myPath"
                        parameters:[NSDictionary dictionaryWithObject:@"y" forKey:@"set"]
                           success:^(AFHTTPRequestOperation *operation, id responseObject){
                                     // do something with response
                           }
                           failure:^(AFHTTPRequestOperation *operation, NSError *error){
                                     // tell user there an error occurred
                           }];

如果有人指出发生这种情况的一些可能原因或需要分析的事情以了解正在发生的事情,我将不胜感激。

【问题讨论】:

  • 这在你的模拟器上有效吗?
  • @DannyLin 是的!它也适用于我尝试过的所有其他设备(我还没有在其他 iPhone 5 上尝试过)

标签: ios rest afnetworking nsurlrequest connection-timeout


【解决方案1】:

该问题与 AFNetworking 与特定设备之间的交互有关的可能性几乎为零 - 很可能是其中之一。

测试 AFNetworking

AFNetworking 确实提供了对连接变化的内置检测。使用AFHTTPClient-setReachabilityStatusChangeBlock: 方法设置块。这将在 Internet 连接中断时通知您,并允许您根据需要调整应用的行为。

Stack Overflow question 提供示例代码和设置说明。

以下是status 变量的值,供您参考:

AFNetworkReachabilityStatusUnknown          = -1,
AFNetworkReachabilityStatusNotReachable     = 0,
AFNetworkReachabilityStatusReachableViaWWAN = 1,
AFNetworkReachabilityStatusReachableViaWiFi = 2,

测试设备

您可以尝试将问题与您的设备隔离开来:

• 下载Fing 并比较不同设备上的网络性能

• 对testmyiphone.com 进行数据速度测试

• 检查设备的parental controls,看看是否有任何与您的应用行为冲突的地方

• 在 iTunes 中恢复设备,而不从备份中恢复

【讨论】:

    【解决方案2】:

    我建议您首先使用 Charles 等工具监控您发送的实际 HTTP 请求/响应

    您可以使用 Charles 作为您实际设备的代理,查看说明here

    希望这会有所帮助。

    【讨论】:

    • 感谢您抽出宝贵时间回答!使用此工具与在 Xcode 上调试并检查请求和响应有何不同?
    • @Moxy Charles(和 Wireshark,一个类似的工具)可以为您提供有关发送/接收时间的具体信息。网络计时问题很难在调试器中解决,因为暂停应用(“中断”)会影响您正在测试的问题是否发生。
    【解决方案3】:

    我的建议是检查您的 iphone wifi 网络。过去,当我连接到公司的公司网络并尝试连接到我的服务器并且请求超时时,这种情况发生在我身上。这可能是由于一些代理问题。

    首先是您的服务器内部网吗?如果不是,请尝试使用 3G 连接到服务器。

    如果是 Intranet,请尝试寻找替代的公司网络或使用 VPN(如果您的公司有 VPN)

    【讨论】:

    • 我们使用的是 3G 连接,它适用于其他请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    相关资源
    最近更新 更多