4

我遇到了一个我无法理解的错误,现在它只发生在特定设备上。它发生在带有 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
                           }];

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

4

3 回答 3

2

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

测试 AFNetworking

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

这个Stack Overflow 问题提供了示例代码和设置说明。

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

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

测试设备

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

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

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

• 检查设备的家长控制,看看是否有任何与您的应用行为发生冲突的地方

• 在 iTunes 中恢复设备,无需从备份恢复

于 2013-02-11T20:11:53.157 回答
0

My suggestion is to check your iphone wifi network. This happen to me in the past when i am connected to my company's corporate network and i tried to connect to my server and there is a request timeout. This may be due to some proxy issues.

Firstly is your server intranet? If it is not, try using 3G to connect to the server instead.

If it is intranet try to find an alternative company network or use VPN if your company has one

于 2013-02-06T02:13:16.563 回答
0

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

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

希望这可以帮助。

于 2013-01-24T16:52:34.383 回答