Ios NSURLConnection GET请求返回-1005;“网络连接已断开”;

Ios NSURLConnection GET请求返回-1005;“网络连接已断开”;,ios,cocoa-touch,Ios,Cocoa Touch,我正在尝试使用iOS 8 SDK上的XCode 6(Beta7 2)中的NSURLConnection发出一个简单的GET请求,该请求因“代码1005,网络连接丢失”而失败。当我尝试从web获取或获取一些其他示例页面时,调用失败,但如果我向本地主机上的简单HTTP服务器发出请求(python-m SimpleHTTPServer),则调用成功。我还尝试过使用AFNetworkinglibrary(2.4.1)-使用NSURLConnection失败的URL也会使用library失败 这是我的密码

我正在尝试使用iOS 8 SDK上的XCode 6(Beta7 2)中的
NSURLConnection
发出一个简单的GET请求,该请求因“代码1005,网络连接丢失”而失败。当我尝试从web获取或获取一些其他示例页面时,调用失败,但如果我向本地主机上的简单HTTP服务器发出请求(
python-m SimpleHTTPServer
),则调用成功。我还尝试过使用
AFNetworking
library(2.4.1)-使用NSURLConnection失败的URL也会使用library失败

这是我的密码-

NSString * url = @"http://0.0.0.0:8000";
// NSString * url = @"http://www.google.com";

NSLog(@"URL : %@", url);

// Mutable is probably not required, but just in case it REALLY WANTS me to set HTTP method
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
[theRequest setHTTPMethod:@"GET"];

NSURLResponse *urlResponse = nil;
NSError *error = nil;

NSData * data = [NSURLConnection sendSynchronousRequest:theRequest
                                      returningResponse:&urlResponse
                                error:&error];

if (error == nil) {
    NSString *response = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
    NSLog(response);
} else {
    NSString *response = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
    NSLog(@"%@", [error userInfo]);
}
日志:


我最近在iPhone6模拟器上看到互联网连接失败,导致了同样的错误。我的Mac电脑有一个正常的互联网连接,而模拟器没有。重新启动模拟器解决了这个问题。

我已经尝试了谷歌至少15个答案的所有建议,但没有一个解决了我的问题,直到我尝试了以下完全解决了我的问题。看起来,Mac电脑上的Wi-Fi连接可能会损坏,因此,如果您删除正在使用的特定连接,然后再次连接(通过选择网络并再次输入密码),那么这将解决问题,不再可怕-1005“网络连接丢失”错误

  • 转到Mac菜单栏上的Wi-Fi符号并“关闭Wi-Fi”
  • 然后选择“打开网络首选项”(从底部的同一菜单)
  • 在网络面板的右下角,选择“高级”
  • 选择以前连接到的网络连接
  • 点击此表下方的减号可删除此连接
  • 点击此窗口的“OK”
  • 点击网络窗口上的“应用”
  • 返回菜单栏上的Wi-Fi符号并重新打开Wi-Fi
  • 等待您的网络连接出现,然后选择它(由于您删除了连接信息,现在它将再次要求输入密码)
  • 现在,它将记住这个新刷新的连接,它将解决这个问题
我观察到,当您保持模拟器处于活动状态且mac长时间处于睡眠状态(比如5到10小时)时,会出现此问题。然后你突然在模拟器上运行应用程序,它会显示日志为

NSURLConnection GET request returns Code=-1005 "The network connection was lost."
解决方案是简单地退出模拟器,清理项目并重新运行项目。
这对我有用

我在iOS 9上的某些网络呼叫中始终遇到此错误。两个工作正常,但另外两个工作不正常


它原来是由我在请求主体中传递的一些不正确的参数引起的。。。我没想到会出现-1005错误。。。但是它做到了。。摆脱不必要的参数,使所有的工作

尝试更改http或json中的请求序列化。在我的例子中,这是json,然后我设置为http。现在,这是工作

[[VTNetworkingHelper sharedInstance] performRequestWithPath:@"Your url  " withAuth:YES forMethod:@"POST" withRequestJSONSerialized:NO withParams:params withCompletionHandler:^(VTNetworkResponse *response) {
            if (response.isSuccessful) {
    }else {
    }];

我有类似的问题,重启模拟器不起作用。在我的例子中,我能够交替地点击web服务,就像在奇数时间它将是成功的,在偶数时间它将我抛出这个错误。我知道这很奇怪,但不知怎么的,情况的确如此。在swift中使用以下方法解决了此问题:

 let urlconfig = NSURLSessionConfiguration.defaultSessionConfiguration()
                urlconfig.timeoutIntervalForRequest = 1
                urlconfig.timeoutIntervalForResource = 1
                let session = NSURLSession(configuration: urlconfig)

                let task = session.dataTaskWithRequest(request){(data,response,error) in
    //Processing
    }
 task.resume()

简单的样品溶液,多次测试,工作完美

//使用状态代码检查响应错误,如果得到-1005,则再次调用该api


kCFStreamErrorDomainKey 1是POSIX域,这意味着kCFStreamErrorCodeKey 57“未连接套接字”。Mac电脑上的防火墙是否不允许Xcode/simulator进行外部连接?@quellish我的Mac电脑上的防火墙已关闭。在我的情况下,_kCFStreamErrorCodeKey=57可能与请求发送到服务器的状态相匹配,但在服务器将响应发送回客户端之前,客户端已脱机。重试此类故障会导致在服务器数据库中创建两个相同的记录。不确定假设57表示“我发送了整个请求”是否安全。即使您现在脱机,您也可以安全地假定服务器将处理该请求。事实上,这是正确的答案!我重新启动了XCode,但不知何故从未想过重新启动模拟器。是的,它在重新启动模拟器后工作!非常感谢。这发生在我使用无线模拟器时,然后切换到有线连接。我甚至试过关掉无线。你们有人对此进行过雷达调查吗?Xcode 6.1和iPhone 6模拟器仍然存在这种情况。@Ben-G在关于同一问题的回答和评论中提到,已经提交了一些雷达。诚实之后,重新启动是最好的策略。这些不必要的参数在代码中的位置是什么?我也面临着类似的问题。恐怕我都记不起我当时在用什么应用了。。。但是,如果您只对请求应用必要的设置和参数,可能会有所帮助。如果您没有发送httpBody,请不要设置内容类型。例如,这是dope!我尝试了许多解决方案,但问题在于我传递给请求的参数。谢谢你的提示!!:)@克玛什
 let urlconfig = NSURLSessionConfiguration.defaultSessionConfiguration()
                urlconfig.timeoutIntervalForRequest = 1
                urlconfig.timeoutIntervalForResource = 1
                let session = NSURLSession(configuration: urlconfig)

                let task = session.dataTaskWithRequest(request){(data,response,error) in
    //Processing
    }
 task.resume()
                if let strErrorReasonCode : Int = response.response?.statusCode {
                           if authentication_Errors_Range.contains(Alamofire_Error) {
                                self.POST(urlString, paramaters: paramaters, showLoader: showLoader, success: { (responseObject) in
                                    if response.result.isSuccess {
                                        if let value = response.result.value {
                                            let dictResponce = self.isValidated(value as AnyObject)
                                            if dictResponce.0 == true {
                                                success(dictResponce.1)
                                            }
                                            else {
                                                failure(dictResponce.1)
                                            }
                                        }
                                    }
                                }, failure: {_ in
                                    failure(jsonResponce)
                                })
                            }
                 }