提问者:小点点

阿拉莫火请求错误: NSURLError域代码 -1005 网络连接丢失


我正在将我的项目从AFNetworking转移到Alamofire。非常喜欢这个项目。然而,我在尝试发出GET请求时收到了这个错误。

以下是一些示例代码:

class func listCloudCredntials(onlyNew onlyNew: Bool = true, includePending: Bool = true) -> Request {

    let parameters: [String: AnyObject] = includePending ? ["include_pending": "true"] : [:]

    let urlString = "https://myapp-staging.herokuapp.com/api/1/credntials"

    let token = SSKeychain.storedToken()

    let headers: [String: String] = ["Authorization": "Bearer \(token)"]

    return Alamofire.request(.GET, urlString, parameters: parameters, encoding: .JSON, headers: headers)
}

然后,在我的VC中:

listCloudCredntials().validate().responseJSON() {
    (response: Response<AnyObject, NSError>) in

    switch response.result {
    case .Success(let result):
        printCR("success: \(result)")

    case .Failure(let error):
        printCR("error: \(error)")
    }
}

这是我遇到的错误:

错误域=NSURLErrorDomain Code=-1005“网络连接已丢失。”UserInfo={NSUnderlyingError=0x14e9c77f0{错误域=kCFErrorDomainCF网络代码=-1005”(空)“UserInfo={_kCFStreamErrorCodeKey=-4,_kCFSreamErrorDomainKey=4}}}},NSErrorFailingURLStringKey=https://myapp-staging.herokuapp.com/api/1/credntials,NSErrorFailingURLKey=https://myapp-staging.herokuapp.com/api/1/credntials,_kCFStreamErrorDomainKey=4,_kCFRtreamErrorCodeKey=-4,NSLocalizedDescription=网络连接丢失。}

我试过在iOS模拟器上运行1OS 8.4和iOS9.1,以及我的iPhone6S运行iOS9.1。

我做错了什么?

--------编辑--------

为了澄清,此功能适用于AFNetwork。

这是调试打印(请求)结果(这是一个 GET 请求):

$ curl -i \
-H "Authorization: Bearer some-JWT-Security-Token" \
-H "Content-Type: application/json" \
-H "Accept-Language: en-US;q=1.0" \
-H "Accept-Encoding: gzip;q=1.0,compress;q=0.5" \
-H "User-Agent: Company/com.Company.AppName (1081; OS Version 9.2 (Build 13C75))" \
-d "{\"include_pending\":\"true\"}" \
"https://appname-staging.herokuapp.com/api/1/credntials"

我必须将curl-i更改为curl-X GET才能让curl成功返回。

这是我需要在没有问题的应用程序中拨打的另一个电话。

curl -i \
-X POST \
-H "Content-Type: application/json" \
-H "Accept-Language: en-US;q=1.0" \
-H "Accept-Encoding: gzip;q=1.0,compress;q=0.5" \
-H "User-Agent: Company/com.Company.AppName (1081; OS Version 9.2 (Build 13C75))" \
-d "{\"token\":\"UserSessionTokenString\"}" \
"https://appname-staging.herokuapp.com/api/1/authenticate/user"

这可能是GET与POST的区别吗?


共2个答案

匿名用户

解决了!我对GET请求使用JSON编码。答案如下:Alamofire请求错误仅出现在GET请求上

匿名用户

如果将请求保留在vc或其他对象中,这个错误就会消失。