我在 iOS 10.3.2 上使用 Xcode 8.3.2 构建了一个应用程序。而且我已经习惯NSURLSession
了实现网络服务。我正在使用以下代码来做到这一点。
NSMutableURLRequest *request=[[NSMutableURLRequest alloc]initWithURL:Url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:180.0] ;
NSMutableDictionary *dict=[[NSMutableDictionary alloc]init];
[dict setObject:lati forKey:@"latitude"];
[dict setObject:longi forKey:@"longitude"];
NSError *errJsonToData = nil;
NSData *requestPostData=[NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&errJsonToData] ;
[request setHTTPMethod:@"POST"] ;
[request setValue:[NSString stringWithFormat:@"%lu",(unsigned long)[requestPostData length]] ;forHTTPHeaderField:@"Content-Length"] ;
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:requestPostData] ;
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session=[NSURLSession sessionWithConfiguration:sessionConfiguration delegate:nil delegateQueue:[NSOperationQueue mainQueue]];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable connectionError) {
if(connectionError)
{
NSLog(@"Error Description: %@",[connectionError localizedDescription]);
} else { //do anything}
}];
[dataTask resume];
现在我的网络服务网址是 http 连接。为此,我还在 Info.plist 中添加了App Transport Security。但问题是此代码在连接到 wifi 时工作正常,但在连接到移动网络(即 3G、LTE)时有时会引发错误。我收到错误“网络连接丢失。” 错误如下:
错误:错误域=NSURLErrorDomain 代码=-1005“网络连接丢失。” UserInfo=0x7ba8e5b0 {NSErrorFailingURLStringKey=, _kCFStreamErrorCodeKey=57, NSErrorFailingURLKey=, NSLocalizedDescription=网络连接丢失。, _kCFStreamErrorDomainKey=1, NSUnderlyingError=0x7a6957e0 "网络连接丢失。"}
如果这是典型的服务器错误,那么为什么它只发生在移动网络上?