【问题标题】:Alamofire JSON POST result in Error: The network connection was lostAlamofire JSON POST 导致错误:网络连接丢失
【发布时间】:2017-01-02 13:49:15
【问题描述】:

有几个人出于不同的原因收到此错误。我找到的答案都没有解决我的问题。

我使用 Timberjack 记录我的 Alamofire 请求。

我所有的 GET 请求都可以正常工作,并且我以 JSON 格式接收数据。 另一方面,如果 POST 包含 JSON 正文,我的 POST 每次工作大约 10 次。

服务器未指定任何 Keep-Alive 标头。

部署目标是 iOS 9.0

这是我与 Timberjack 共享的经理:

class HTTPManager: Alamofire.Manager{
    static let sharedManager: HTTPManager = {
        let configuration = Timberjack.defaultSessionConfiguration()
        let manager = HTTPManager(configuration: configuration)
        return manager
    }()
}

定义请求:

let parameters: [String: AnyObject] = ["status":status]
request = HTTPManager.sharedManager.request(.POST, "\(baseURL)\(uri)", parameters: parameters, encoding: .JSON).validate()

发送请求:

request!.responseJSON(queue: queue, options: .AllowFragments, completionHandler: { (response) in

                        //Handling the response

})

大多数情况下,服务器会收到一个空的 JSON 正文。但有时它确实有效并且接收到正文并且服务器以 OK 响应。当它不起作用时,我收到错误:

Error: The network connection was lost.
FAILURE: Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." 
UserInfo={NSUnderlyingError=0x12fa47cb0 {Error Domain=kCFErrorDomainCFNetwork Code=-1005 "The network connection was lost." 

如果有人能解释这里发生的事情,我将永远感激不尽:)

编辑 1 我们让服务器用 "Connection": "close" 响应每个调用,这对解决问题没有任何帮助。该应用程序始终默认发送 "Connection": "keep-alive" 并且无法更改。这可能是问题吗?应用程序认为连接已打开,即使它已被服务器关闭?但即使您等待几分钟,POST 调用似乎也只能随机运行。

编辑 2 即使我在 GET(s) 和/或 POST(s) 之间等待 30 秒。 GET 总是有效的。 POST 随机工作(很少)。我在大多数 POST 上都收到 -1005 错误。即使我收到网络连接丢失错误,服务器仍会收到我的请求,但 JSON 正文丢失。

EDIT 3 - 丑陋的解决方案 在我的回复中,我检查了错误代码 -1005,当我收到此错误时,我只是重新创建请求并重试。这导致向服务器发送大约 2-4 个 POST 请求,其中一个 POST 工作,其余的具有空的 JSON 正文。

【问题讨论】:

  • 你在模拟器上运行吗?尝试重新启动模拟器并选择另一个。我之前遇到过这个问题
  • @h44f33z 不在模拟器上,但谢谢!

标签: ios json swift post alamofire


【解决方案1】:

重启模拟器从任务中退出来杀死你的应用

或查看此错误码的更多解决方案:

NSURLErrorDomain Code -1005 The network connection was lost

【讨论】:

  • 谢谢,但没用。我正在弄清楚它是否与 Keep-Alive 标头的默认行为有关。该应用程序认为会话仍在运行,即使服务器关闭它。但是在这种情况下它只发生在 POST 上仍然很奇怪..
猜你喜欢
  • 1970-01-01
  • 2016-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-06
  • 2017-06-17
  • 1970-01-01
  • 2015-09-18
相关资源
最近更新 更多