Voi*_*ack 258 ios-simulator xcode6 ios8 xcode6-beta5
我有一个适用于Xcode6-Beta1和Xcode6-Beta2的iOS7和iOS8应用程序.但是对于Xcode6-Beta3,Beta4,Beta5,我正面临着iOS8的网络问题,但在iOS7上一切正常.我收到了错误"The network connection was lost.".错误如下:
错误:错误域= NSURLErrorDomain代码= -1005"网络连接丢失." UserInfo = 0x7ba8e5b0 {NSErrorFailingURLStringKey =,_ kCFStreamErrorCodeKey = 57,NSErrorFailingURLKey =,NSLocalizedDescription =网络连接丢失.,_ kCFStreamErrorDomainKey = 1,NSUnderlyingError = 0x7a6957e0"网络连接丢失."}
我使用AFNetworking 2.x和以下代码片段进行网络调用:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager setSecurityPolicy:policy];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager POST:<example-url>
parameters:<parameteres>
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@“Success: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
Run Code Online (Sandbox Code Playgroud)
我试过NSURLSession但仍然收到同样的错误.
Col*_*lin 413
重启模拟器为我解决了这个问题.
Art*_*hur 222
我们遇到了这个确切的错误,结果是基础HTTP实现的问题NSURLRequest:
据我们所知,当iOS 8/9/10/11收到带有Keep-Alive标头的HTTP响应时,它会保持此连接以后再重复使用(应该如此),但它保留的不仅仅是timeout参数Keep-Alive标头(似乎始终保持连接活动30秒.)然后当应用程序在30秒后发送第二个请求时,它会尝试重新使用服务器可能已删除的连接(如果超过真实Keep-Alive时间).
以下是我们迄今为止找到的解决方案:
KeepAliveTimeout选项为Apache完成.BrowserMatch "iOS 8\." nokeepalive在mod文件中setenvif.conf)Connection: close标头发送请求:这将告诉服务器立即断开连接并在没有任何保持活动标头的情况下进行响应.但是目前,NSURLSession似乎Connection在发送请求时覆盖了标头(我们没有广泛地测试这个解决方案,因为我们可以调整Apache配置)Man*_*Mal 47
对我来说Resetting content and settings,模拟器工作.要重置模拟器,请按照以下步骤操作:
iOS模拟器 - >重置内容和设置 - >按重置(关于将出现的警告)
Jer*_*oia 29
iOS 8.0模拟器运行时存在一个错误,即如果在模拟设备启动时网络配置发生更改,模拟运行时中的更高级API(例如:CFNetwork)将认为它已丢失网络连接.目前,建议的解决方法是在网络配置更改时简单地重新启动模拟设备.
如果您受此问题的影响,请在http://bugreport.apple.com上提交其他重复的雷达,以提高其优先级.
如果你在没有改变网络配置的情况下看到这个问题,那么这不是一个已知的错误,你肯定应该提交雷达,表明问题不是已知的网络配置改变的错误.
ptc*_*ptc 11
在iOS 8模拟器上运行时,测试版5和AFNetworking 1.3也会出现问题,从而导致连接错误:
Domain = NSURLErrorDomain Code = -1005"网络连接丢失."
相同的代码在iOS 7和7.1模拟器上工作正常,我的调试代理显示在实际尝试连接之前发生了故障(即没有记录请求).
我跟踪了NSURLConnection的失败并向Apple报告了错误.见附图中的第5行:
.
更改为使用https允许从iOS 8模拟器连接,尽管有间歇性错误.
Xcode 6.01(gm)中仍然存在问题.
在2017-01-25了有关此错误的技术问答:
\n\n苹果技术问答 QA1941
\n处理\xe2\x80\x9c网络连接丢失\xe2\x80\x9d错误
\n答:NSURLErrorNetworkConnectionLost 在 NSURLErrorDomain 错误域中为错误 -1005,向用户显示为 \xe2\x80\x9c网络连接丢失\xe2\x80\x9d。此错误意味着在 HTTP 请求正在进行时,\xe2\x80\x99s 承载 HTTP 请求的底层 TCP 连接已断开(有关此问题的更多信息,请参阅下文)。在某些情况下,NSURLSession 可能会自动重试此类请求(特别是,如果请求是幂等的),但在其他情况下,\xe2\x80\x99s 是 HTTP 标准不允许的。
\nhttps://developer.apple.com/library/archive/qa/qa1941/_index.html#//apple_ref/doc/uid/DTS40017602
\n
方法1:
if (error.code == -1005)
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
dispatch_group_t downloadGroup = dispatch_group_create();
dispatch_group_enter(downloadGroup);
dispatch_group_wait(downloadGroup, dispatch_time(DISPATCH_TIME_NOW, 5000000000)); // Wait 5 seconds before trying again.
dispatch_group_leave(downloadGroup);
dispatch_async(dispatch_get_main_queue(), ^{
//Main Queue stuff here
[self redoRequest]; //Redo the function that made the Request.
});
});
return;
}
Run Code Online (Sandbox Code Playgroud)
还有人建议重新连接到该网站,
即两次发送POST请求
解决方案:使用方法连接到站点,返回(id),如果网络连接丢失,则返回使用相同的方法.
方法2
-(id) connectionSitePost:(NSString *) postSender Url:(NSString *) URL {
// here set NSMutableURLRequest => Request
NSHTTPURLResponse *UrlResponse = nil;
NSData *ResponseData = [[NSData alloc] init];
ResponseData = [NSURLConnection sendSynchronousRequest:Request returningResponse:&UrlResponse error:&ErrorReturn];
if ([UrlResponse statusCode] != 200) {
if ([UrlResponse statusCode] == 0) {
/**** here re-use method ****/
return [self connectionSitePost: postSender Url: URL];
}
} else {
return ResponseData;
}
}
Run Code Online (Sandbox Code Playgroud)
我也遇到了这个错误,但是是在实际设备而不是模拟器上。我们在 HTTPS(gunicorn 服务器)上访问 heroku 后端以及使用大型正文(任何超过 64Kb 的内容)执行 POSTS 时注意到错误。我们使用 HTTP Basic Auth 进行身份验证,并注意到错误是通过不在didReceiveChallenge:NSURLSession 上使用委托方法解决的,而是通过添加Authentiation: Basic <Base64Encoded UserName:Password>. 这可以防止触发didReceiveChallenge:委托消息所必需的 401,以及随后的网络连接丢失。
| 归档时间: |
|
| 查看次数: |
161907 次 |
| 最近记录: |