AFNetworking 在 iOS 6 下停止工作。

7

最近我注意到,我的代码使用了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];

所有其他请求的构造方式类似。第一个排队操作很好,我可以进入成功处理程序块。然而,对其他请求的下一次调用会以失败处理程序和请求超时错误完成,无论我选择多大的超时值。
我已经使用纯粹的NSURLConnection进行了相同的调用,编写了大量代码,成功地处理了请求。
我切换到iOS 5设备,上述代码运行良好。
我切换到3G连接(iOS 6),上述代码也可正常工作。
看起来我只在WiFi连接上有这个问题(除非我在与我的REST服务器位于同一子网的情况下)。
对此有什么想法吗?
谢谢你提前。

这里发生了同样的事情。我可以通过手动编写请求代码来使其工作,但仍然使用AF..RequestOperation。AFHTTPClient在我的家庭WiFi上运行良好,但无法通过我的大学代理运行。 - David Lawson
1个回答

2

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

似乎iOS 6改变了TCP实现或其他东西。我将服务器移动到第三方托管,现在它可以工作了。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接