描述你的問題 AFNetworking 無線存取正常 蜂窩數據存取出錯 報 -1012
貼上相關代碼
貼上報錯訊息 Error Domain=NSURLErrorDomain Code=-1012 "未能完成操作。(「NSURLErrorDomain」錯誤 -1012。)" UserInfo=0x175d6c00
貼上相關截圖
已經嘗試過哪些方法仍然沒解決(附上相關連結)
這和AFNetworking沒有關係,code=-1012 是系統提供 NSURLError 的錯誤訊息。這有對照表http://blog.csdn.net/yesjava/article/details/8056681。 NSURLErrorUserCancelledAuthentication = -1012。用戶取消驗證。 搜搜就知道原因了。
1.無線存取和蜂窩存取的DNS伺服器不一樣. 看報錯資訊,你存取的伺服器開啟了SSL,使用了自產生的憑證.2.AFNetworking 2.x 我沒有遇到類似問題,在3 .x版本下:2.1 程式碼修改:
//使用默认的security policy, 注释掉类似代码: //sessionMgr.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone]; //以下和AFNetworking 2.x相同 sessionMgr.securityPolicy.allowInvalidCertificates = YES; //以下是AFNetworking 3.x 下需要的 sessionMgr.securityPolicy.validatesDomainName = NO;
2.2 Info.plist 加入ATS:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
3.程式碼舉例:
//#自生成证书 -(IBAction)clickOnSSLWithJSON:(id)sender { NSLog(@"ssl with json"); NSURL *url = [NSURL URLWithString:@"https://192.168.1.6:3000"]; AFHTTPSessionManager *sessionMgr=[[AFHTTPSessionManager alloc]initWithBaseURL:url]; sessionMgr.responseSerializer = [AFHTTPResponseSerializer serializer]; sessionMgr.responseSerializer.acceptableContentTypes = [[NSSet alloc] initWithObjects:@"text/html",nil]; //in this case, Info.plist should be added with keys 'NSAppTransportPolicy' and 'NSAllowsArbitraryLoads', //and security policy should be used with default. //following setting is same as AFNetworking 2.x sessionMgr.securityPolicy.allowInvalidCertificates = YES; //following setting is specified for AFNetworking 3.x sessionMgr.securityPolicy.validatesDomainName = NO; [sessionMgr GET:@"" parameters:nil progress:nil success: ^(NSURLSessionDataTask * _Nonnull task, id _Nullable result){ //NSUTF8StringEncoding should be encoded for response data. NSLog(@"ok:\n%@",[[NSString alloc]initWithData:result encoding:NSUTF8StringEncoding]); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"error:\n%@",error); }]; }
這和AFNetworking沒有關係,code=-1012 是系統提供 NSURLError 的錯誤訊息。這有對照表http://blog.csdn.net/yesjava/article/details/8056681。
NSURLErrorUserCancelledAuthentication = -1012。用戶取消驗證。
搜搜就知道原因了。
1.無線存取和蜂窩存取的DNS伺服器不一樣. 看報錯資訊,你存取的伺服器開啟了SSL,使用了自產生的憑證.
2.AFNetworking 2.x 我沒有遇到類似問題,在3 .x版本下:
2.1 程式碼修改:
2.2 Info.plist 加入ATS:
3.程式碼舉例: