我是var clinic_id = $('#clinic_id_pricelist').val();
var url = "/my_url/route_name"; // <- CHANGE THIS TO THE CORRECT URL
$.get(url, {
id: clinic_id
}, function (returnedData) {
console.log(returnedData);
});
的新手,我正使用它来请求休息api。
现在,在发出请求时可能会有两个问题,我想知道如何使用Alamofire
处理这些问题。
1)如果用户提交了数据并且Internet速度很慢并且需要更长的时间才能从服务器获得响应,该怎么办。在这种情况下,应如何确保请求是否成功。或者,我们可以向用户显示Internet速度慢的消息,以便他可以等待较长的响应。
2)如果互联网速度正常但服务器已关闭或者发送响应的时间更长,该如何在应用程序中处理这些情况呢?并保持数据的完整性。
以下是我如何使用Alamofire
进行请求的示例。
Alamofire
答案 0 :(得分:1)
您实际上是在正确实现alamofire,如果网络速度很慢,我早会遇到连接和服务器问题。尝试使用其他服务器上的其他端点来测试速度。如果速度更快,则问题出在服务器上。由于您的实现是正确的,那么肯定是服务器问题。如果问题出在服务器或连接上,alamofire与该问题无关。
答案 1 :(得分:0)
您可以增加响应缓慢的API调用的超时时间。
static func getUserListFromServer(completion: @escaping(Bool,[Users]?,String?)->() ){
let request = NSMutableURLRequest(url: APPURL.getFeedbackUserList)
request.httpMethod = "GET"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.timeoutInterval = 10 // change time out according to your need
let values = ["key": "value"]
request.httpBody = try! JSONSerialization.data(withJSONObject: values, options: [])
Alamofire.request(request as! URLRequestConvertible).responseJSON { (responseJson) in
responseJson.result.ifSuccess {
do {
// Decode data to object
let jsonDecoder = JSONDecoder()
let root = try jsonDecoder.decode(Root.self, from: responseJson.data!)
if let users = root.users{
completion(true,users,nil)
}else{
completion(false,nil,"No users found.")
}
}
catch let err {
print(err.localizedDescription)
completion(false,nil,err.localizedDescription)
}
}
responseJson.result.ifFailure {
completion(false,nil,responseJson.result.error?.localizedDescription)
}
}
}