swift Alamofire get 请求出现 Error

/ Mac / 没有评论 / 1521浏览

swift Alamofire get 请求出现 Error Domain=NSURLErrorDomain Code=-1001 "请求超时。" UserInfo={NSUnderlyingErro

Error Domain=NSURLErrorDomain Code=-1001 "请求超时。" UserInfo={NSUnderlyingError=0x1c0a48310 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}

这个原因,我查了半天,网上都是设置超时时间的帖子,但是,这个get请求,并没有超时就返回这个错误了,后来发现是请求方法中用的和post一样的encoding:JSONEncoding.default;下面介绍一下encoding的使用场景

  1. JSONEncoding.default 是放在HttpBody内的,比如post请求
  2. URLEncoding.default 在GET中是拼接地址的, 比如get请求
  3. URLEncoding(destination: .methodDependent) 是自定义的URLEncoding,methodDependent的值如果是在GET 、HEAD 、DELETE中就是拼接地址的。其他方法方式是放在httpBody内的。
  4. URLEncoding(destination: .httpbody)是放在httpbody内的

于是我用URLEncoding.default替换了之前的JSONEncoding.default就好了

Alamofire.request(url, method: .get, parameters: nil, encoding:JSONEncoding.default, headers: ["Content-Type":"application/json"]).responseJSON { (response) in                                                                                                                                                }

Alamofire.request(url, method: .get, parameters: nil, encoding:URLEncoding.default, headers: ["Content-Type":"application/json"]).responseJSON { (response) in                                                                                    }