每两个请求之一中的 Swift Alamofire “请求超时”
Posted
技术标签:
【中文标题】每两个请求之一中的 Swift Alamofire “请求超时”【英文标题】:Swift Alamofire "The request timed out" in one of every two requests 【发布时间】:2018-08-02 12:23:23 【问题描述】:在我两次使用相同 URL 调用 loadHeader 的每一次中,我都会收到“请求超时”错误。在第一次尝试中,该功能有效,我设法获取并解析响应。第二,我有时间。第三次它起作用,第四次再次超时。是关于我的代码还是关于服务器?我尝试在重试之前等待,因为它可能是服务器的一些安全协议,但它没有改变任何东西。
这里是错误代码:
FAILURE: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out."
这是我的代码:
func loadHeader(url: String)
let parameters = ["foo": "bar"]
Alamofire.request(url, method: .get, parameters: parameters, encoding: JSONEncoding.default)
.validate request, response, data in
// Custom evaluation closure now includes data (allows you to parse data to dig out error messages if necessary)
return .success
.responseJSON
response in
let json=response.data
self.jsonToObjectHeader(json: json!)
func jsonToObjectHeader(json:Data)
do
databases = try JSONDecoder().decode(responseHeader.self,from: json)
if databases.ordersHeader.count == 0
let alert = UIAlertView(title: "empty",message: "empty",delegate: nil,cancelButtonTitle: "OK")
alert.show()
else
for i in 0...databases.ordersHeader.count-1
myArray2.append(databases.ordersHeader[i].productName!)
DispatchQueue.main.async
self.myTableView.reloadData()
self.myTableView.tableFooterView = UIView()
//print(databases.ordersHeader[0].companyAddress)
catch let jsonErr
print(jsonErr)
【问题讨论】:
你试过用CharlesProxy之类的东西调试网络端吗?如果它返回超时错误,那么听起来可能是服务器问题。 我认为是服务器问题,而不是 Alamofire 用邮递员试试看是否可以正常工作。 我刚用 Postman 试了一下,服务器工作正常 【参考方案1】:我已经添加了
let parameters = ["foo": "bar"]
认为我必须在函数中提供参数。刚刚更新了
Alamofire.request(url, method: .get, parameters: parameters, encoding: JSONEncoding.default)
到
Alamofire.request(url, method: .get, parameters: nil, encoding: JSONEncoding.default)
它解决了这个问题。发布此内容以防有人遇到类似情况。
【讨论】:
以上是关于每两个请求之一中的 Swift Alamofire “请求超时”的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3.0 迁移后的 Alamofire 错误:“调用中的额外参数”(请求方法)
Swift 3 - 不能使用数组提出的 Alamofire 请求