发送http post请求时NSURLErrorDomain Code = -1001错误

时间:2014-11-26 21:50:54

标签: ios swift nsurlsession nsurlerrordomain

我使用以下代码将图像发布到我的服务器。

@IBAction func postButtonPressed(sender: UIButton) {
    let task = NSURLSession.sharedSession().dataTaskWithRequest(createRequest("http://xx.xx.xxx.xxx/xxxx/"), completionHandler: {
        data, response, error in
        println(NSString(data: data, encoding: NSUTF8StringEncoding))
    })
    task.resume()
}

其中createRequest()创建所需的NSURLRequest对象。

使用模拟器时,此功能正常。问题是当我在iPhone上运行我的应用程序时出现以下错误。

Error Domain=NSURLErrorDomain Code=-1001 "The operation couldn’t be completed. (NSURLErrorDomain error -1001.)" UserInfo=0x155e71f0 {NSErrorFailingURLKey=http://xx.xxx.xxx.xxx/xxxx/, NSErrorFailingURLStringKey=http://54.148.156.117/query/, NSUnderlyingError=0x155674d0 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error -1001.)"}

我了解到这个错误是超时错误。重新启动应用程序或手机没有帮助。此外,我已经尝试从网络浏览器将图像发布到我的服务器,它没有问题。

可能导致此超时错误的原因是什么?

编辑:当我监控网络活动时,即使我发送的图片为0.1 MB,我也意识到该应用会发送10 MB数据。

5 个答案:

答案 0 :(得分:8)

显然我的帖子请求收到超时错误,因为我发送了一个服务器发现太大的图像。我按比例缩小图像以使服务器接受我的图像。

正如this post所示,NSURLErrorDomain Code=-1001错误可能是由许多内容引起的,包括;

  • 服务器响应时间限制
  • 有关传入数据的服务器规则
  • 身份验证问题

希望对其他人有所帮助

答案 1 :(得分:2)

在我的案例中,问题出在第三方库 - FirebasePerformance。 错误报告网址:https://github.com/firebase/firebase-ios-sdk/issues/486

答案 2 :(得分:2)

回复已经很晚了,但我最近在运行分配给我的新应用程序时遇到了错误。该应用程序是我公司系统管理员 URL域被阻止之一 我请他们允许我访问URL,之后响应来了,应用程序运行完美 对于每个人来说,这可能不是实际的解决方案,但是有些开发人员可能会受限制的环境可以获得帮助。

答案 3 :(得分:1)

我已将标头与application / json结合使用并根据请求进行发送:

let headers: HTTPHeaders = [
        .accept("application/json")
]
AF.request(url, method: .post, parameters: score, encoder: JSONParameterEncoder.default, headers: headers)

答案 4 :(得分:0)

嗯,在我的情况下,简单地增加请求的超时即可解决问题。