ios - NSURLSession 获得 200 成功,错误域 = NSURLErrorDomain 代码 = -1005 “网络连接丢失。” 在 iOS11
问题描述
我正在使用 xcode 9.2 和 iOS 11.4 开发应用程序。当我尝试 NSURLSession downloadTaskWithRequest 在后台和前台切换应用程序状态时,有时应用程序会获得 200 次成功,错误域=NSURLErrorDomain Code=-1005 “网络连接丢失。”</p>
错误如下:
NSLocalizedDescription = "网络连接丢失。"; NSUnderlyingError = "错误域=kCFErrorDomainCFNetwork Code=-1005 \"(null)\" UserInfo={NSErrorPeerAddressKey={length = 28, capacity = 28, bytes = 0x1c1e01bb000000002604558000210000 ... a5c562bc00000000}, _kCFErrorStreamErrorCodeKey=57," ; "_kCFStreamErrorCodeKey" = 57; "_kCFStreamErrorDomainKey" = 1;
我的要求如下:
NSMutableURLRequest *urlRequest = nil;
NSString *urlString = nil;
NSURL * url = nil;
urlString = [NSString stringWithFormat:@"https://%@%@", self.requestUrl, self.queueName];
url = [NSURL URLWithString:urlString];
urlRequest = [NSMutableURLRequest requestWithURL:url];
urlRequest.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
[urlRequest addValue:@"" forHTTPHeaderField:@"User-Agent";
[urlRequest setHTTPMethod:@"DELETE"];
[urlRequest setTimeoutInterval:REQUEST_TIMEOUT];
[urlRequest addValue:@"correlID, msgId, usr-clientMessageId" forHTTPHeaderField:@"x-msg-require-headers"];
[urlRequest addValue:self.messageInfo.messageId forHTTPHeaderField:@"x-msg-msgId"];
[urlRequest addValue:@"Delivery" forHTTPHeaderField:@"applicationOrgin"];
[urlRequest addValue:@"" forHTTPHeaderField: @"x-msg-wait";
downloadTaskWithRequest 代码片段如下:
self.downloadTask = [self.urlSession downloadTaskWithRequest:urlRequest completionHandler:
^(NSURL *location, NSURLResponse *response, NSError *error){
FLog(@"received response for message type: %d and operation type: %d\n",self.messageType, self.requestType);
NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
FLog(@"%ld for operation %d for request type %d",(long)[httpResponse statusCode],self.self.messageType,self.requestType);
FLog(@"response is %@",response);
NSHTTPURLResponse *httpresp = (NSHTTPURLResponse *)response;
NSString * origId = [[httpresp allHeaderFields] objectForKey:(@"x-msg-msgId")];
FLog(@"recieved response header %@",httpresp.allHeaderFields);
[self downloadCompletedWithResponse:response location:location error:error];
}];
[self.downloadTask resume];
有人面临同样的问题吗?任何有想法的人都可以解决这个问题吗
解决方案
推荐阅读
- html - 空白页 HTML
- python - 使用 iframe 抓取网站
- windows - WS_CLIPSIBLINGS 样式自动添加
- java - JSONArray 需要更高的 API 级别,但在同一类中使用没有问题
- charts - 如何在 highcharts 的堆积条形图内部显示文本
- python - 替换python字典中的单个重复字符
- tizen - Tizen Studio:由于证书配置文件中的签名错误而无法安装应用程序(错误:-12)
- python - 使用 tf.keras 将 TensorFlow 重写为 Keras
- java - java 8 Hibernate org.hibernate.MappingException:未知实体:
- java - 在 Android 上移动文件时询问用户有关重写文件的问题