AFNetworking 在 iOS 6 下停止工作

Posted

技术标签:

【中文标题】AFNetworking 在 iOS 6 下停止工作【英文标题】:AFNetworking stopped working under iOS 6 【发布时间】:2012-10-08 09:37:19 【问题描述】:

我最近注意到,我使用 AFNetworking(来自 master 分支的最新版本)的代码在 ios 6 下无法正常工作。 这是我的代码:

httpClient = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:baseURL]];
httpClient.operationQueue.maxConcurrentOperationCount = 1;

其中httpClient 是一个类变量。

接下来,我正在创建一个请求:

NSMutableURLRequest *signInRequest = [httpClient requestWithMethod:@"POST" path:@"/user/register" parameters:dataToSend];
signInRequest.timeoutInterval = 15.0;
signInRequest.cachePolicy = NSURLRequestReloadIgnoringLocalAndRemoteCacheData;

AFJSONRequestOperation *signInOperation = [AFJSONRequestOperation JSONRequestOperationWithRequest:signInRequest success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON)

    // Blah

    failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON)

    // Blah
];

[httpClient enqueueHTTPRequestOperation:signInOperation];

所有其他请求的构造类似。第一个入队操作运行良好,我可以进入成功处理程序块。但是,无论我选择多大的超时值,对其他请求的下一次调用都会以失败处理程序和 request timeout 错误完成。

我使用普通的NSURLConnection 完成了相同的调用,编写了大量代码:),成功地处理了请求。

我切换到 iOS 5 设备,上面的代码运行良好。

我切换到 3G 连接(iOS 6),上面的代码有效。

我似乎只在 WiFi 连接上遇到这个问题(除了我与我的 REST 服务器在同一个子网中的情况。)

对此有什么想法吗?

提前谢谢你。

【问题讨论】:

这里发生了同样的事情。我可以通过手动编码请求但仍使用 AF..RequestOperation 来使其工作。 AFHTTPClient 在我的家庭 wifi 上工作,但不是通过我 uni 的代理。 【参考方案1】:

看来您也在 AFNetworking 的 github 上发布了一个问题,并自己找到了解决方案 :)!

iOS 6 似乎对 TCP 实现或其他东西进行了更改。我将服务器移至第三方托管,现在可以正常使用了。

对于未来的读者,可以在here找到问题。

【讨论】:

以上是关于AFNetworking 在 iOS 6 下停止工作的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking 2.0.3 不适用于 iOS 6

AFNetworking HTTP POST 上传图像在接近完成时停止

AFNetworking 2.2.1 是不是支持 iOS 6.0? [复制]

iOS网络操作与AFNetworking

iOS开发网络数据之AFNetworking使用

ios开发之--swift下AFNetworking的使用