【发布时间】:2016-09-20 17:12:12
【问题描述】:
我的应用使用 AFNetworking 2.x 从我们其中一台服务器上的数据库中获取数据。直到上周左右,一切都运行良好。现在,我们至少无法让我们的一个连接正常工作。这是代码。
NSString *loginURL =
@"https://<server>/<path>/<url>";
AFHTTPRequestOperationManager *manager =
[AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer
setAuthorizationHeaderFieldWithUsername:pUserEmail
password:pUserPassword];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
AFHTTPRequestOperation *operation = [manager GET:loginURL
parameters:[self jsonDict]
success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (completionBlock) {
completionBlock(YES);
}
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (completionBlock) {
completionBlock(NO);
}
}];
[operation start];
}
对我来说真正奇怪的是,如果我在浏览器中访问 URL 并输入用户名/密码,我就可以访问。
如果我使用 Xcode 7.3.1 并在模拟器中运行,那么我可以访问。
如果我在我的 iPhone 上运行它会失败,并且我会收到以下 3 条错误消息。
Sep 20 10:54:54 iPhone Scoular(CFNetwork)[1999] <Notice>: N -9801
(kCFStreamErrorDomainSSL, -9801)
Sep 20 10:54:54 iPhone Scoular(CFNetwork)[1999] <Error>: HTTP load failed (error code: -1200 [3:-9801])
Sep 20 10:54:54 iPhone Scoular(CFNetwork)[1999] <Error>: NSURLConnection finished with error - code -1200
我的猜测是某些东西(iOS8 或 iOS9 中的 NSURLConnection)已被弃用,在 iOS10 中不再允许,如果我更新到 AFNetworking 3.x 它将解决这个问题,但我不完全确定。
使用 iOS9 的用户能够进行身份验证。
我认为服务器没有任何变化。
【问题讨论】:
-
with ios10
NSAppTransportSecurity 必须为真。是否在您的项目中指定?NSAllowsArbitraryLoads -
没有。这会在我的 plist 中吗?
-
但为什么它会在模拟器中工作?
-
hmm.. 在 info.plist 中必须将其设置为 true。我们可以尝试将其作为根本原因的一种可能性消除吗?
-
是的,让我试试。我看到其他人有同样的问题(通过谷歌)。谢谢,我会尽快回复您。
标签: rest nsurlconnection afnetworking-2 afnetworking-3