Alamofire JSON POST导致错误:网络连接丢失

时间:2016-08-26 01:11:41

标签: ios json swift post alamofire

有些人因为不同的原因而收到此错误。我找到的答案都没有解决我的问题。

我使用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正文。但有时它确实有效并且正在接收正文并且服务器响应正常。当它不起作用时,我收到错误:

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":"关闭" 来响应每个呼叫,这对于解决问题毫无帮助。该应用程序始终默认发送" Connection":" keep-alive" 且无法更改。这可能是问题吗?该应用程序认为连接是开放的,即使它被服务器关闭了?但即使你等​​了几分钟,似乎POST呼叫只能随机工作。

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

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

1 个答案:

答案 0 :(得分:-2)

重启模拟器通过抛弃任务来杀死您的应用

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

NSURLErrorDomain Code -1005 The network connection was lost