Alamofire 请求错误: NSURLErrorDomain Code -1005 网络连接丢失

10

我正在将我的项目从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)")
    }
}

我遇到的错误如下:

Error Domain=NSURLErrorDomain Code=-1005 "网络连接已断开。" UserInfo={NSUnderlyingError=0x14e9c77f0 {Error Domain=kCFErrorDomainCFNetwork Code=-1005 "(null)" UserInfo={_kCFStreamErrorCodeKey=-4, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=https://myapp-staging.herokuapp.com/api/1/credntials, NSErrorFailingURLKey=https://myapp-staging.herokuapp.com/api/1/credntials, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-4, NSLocalizedDescription=网络连接已断开。}

我已经在iOS模拟器上尝试过iOS 8.4和iOS 9.1,以及我的iPhone 6S运行iOS 9.1。

我做错了什么?

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

澄清一下,这个函数在使用AFNetworking时完全正常。

以下是debugprint(request)的结果(这是一个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成功返回,我需要将curl -i更改为curl -X GET。

这是另一个在应用程序中需要调用且没有任何问题的调用。

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有关的问题吗?


1
可能是[Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost."]的重复问题。(https://dev59.com/E18e5IYBdhLWcg3wyM0r) - sunshinejr
2个回答

12

-2
如果您在您的 VC 或其他对象中保留请求,这个错误就会消失。

有误,我刚才试了一下没成功。请看上面更新后的代码。 - Cody Winton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接