12

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

@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.)"}

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

什么可能导致此超时错误?

编辑:当我监控我的网络活动时,我意识到应用程序发送了 10 MB 数据,即使我发送的图像是 0.1 MB。

4

5 回答 5

12

显然,我的发布请求出现超时错误,因为我正在发送服务器会发现太大的图像。我缩小了图像以使服务器可以接受我的图像。

正如这篇文章所暗示的,NSURLErrorDomain Code=-1001错误可能是由许多事情引起的,包括:

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

希望对其他人有所帮助

于 2014-11-28T13:25:42.963 回答
2

就我而言,问题出在 3rd 方库中 - FirebasePerformance. 错误报告网址:https ://github.com/firebase/firebase-ios-sdk/issues/486

于 2017-11-22T21:48:07.780 回答
2

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

于 2018-01-11T07:41:34.760 回答
2

好吧,就我而言,只需增加请求的超时时间就可以解决问题。

于 2019-02-08T09:10:32.963 回答
1

我修复了使用带有 application/json 的标头并发送请求:

let headers: HTTPHeaders = [
        .accept("application/json")
]
AF.request(url, method: .post, parameters: score, encoder: JSONParameterEncoder.default, headers: headers)
于 2020-04-07T18:52:07.367 回答