我正在将我的项目从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{Error域=kCFErrorDomainCF网络代码=-1005"(null)"UserInfo={_kCFStreamErrorCodeKey=-4、_kCFSstreamErrorDomainKey=4}},NSErrorFailingURLStringKey=https://myapp-staging.herokuapp.com/api/1/credentials,NSErrorFailingURLKey=https://myapp-staging.herokuapp.com/api/1/credentials,_kCFStreamErrorDomainKey=4,_kCFStream ErrorCodeKey=-4,NSLocalizedDescription=网络连接丢失。}
我试过在iOS模拟器上运行1OS 8.4和iOS 9.1,以及运行iOS 9.1的iPhone 6S。
我做错了什么?
--------编辑--------
要澄清的是,此功能与AFNetworking配合使用很好
以下是debugprint(请求)结果(这是一个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-XGET。
这是我需要在应用程序中打的另一个电话,它可以正常工作。
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的区别吗?
已解决!我对GET请求使用JSON编码。答案如下:Alamofire请求错误仅发生在GET请求
如果将请求保留在vc或其他对象中,则此错误将消失。