AFNetworking在iOS 6下停止工作

时间:2012-10-08 09:37:20

标签: networking nsurlconnection ios6 afnetworking nsmutableurlrequest

我最近注意到,我的代码使用AFNetworking(主分支的最新版本)在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服务器位于同一子网中。)

对此有何想法?

提前谢谢。

1 个答案:

答案 0 :(得分:2)

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

  

似乎iOS 6改变了TCP实现的东西。我将服务器移动到第三方托管,它现在正在运行。

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