Как широко известно, что асинхронный запрос сообщения лучше, поскольку пользователь не получит представление о том, что приложение «разбилось», когда оно загружает длительный процесс.Как преобразовать синхронный запрос на отправку асинхронного почтового запроса?
Однако я не знаю, с чего начать конвертировать синхронный запрос на отправку асинхронного запроса на получение кода Swift.
У меня есть этот код в настоящее время:
func checkLogin() {
let username:NSString = txtUsername.text! as NSString
let password:NSString = txtPassword.text! as NSString
do {
let post:NSString = "username=\(username)&password=\(password)" as NSString
NSLog("PostData: %@",post);
let url:URL = URL(string:"https://example.com/login.php")!
let postData:Data = post.data(using: String.Encoding.ascii.rawValue)!
let postLength:NSString = String(postData.count) as NSString
let request:NSMutableURLRequest = NSMutableURLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = postData
request.setValue(postLength as String, forHTTPHeaderField: "Content-Length")
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.setValue("application/json", forHTTPHeaderField: "Accept")
var reponseError: NSError?
var response: URLResponse?
var urlData: Data?
do {
urlData = try NSURLConnection.sendSynchronousRequest(request as URLRequest, returning:&response)
} catch let error as NSError {
reponseError = error
urlData = nil
}
if (urlData != nil) {
let res = response as! HTTPURLResponse!;
NSLog("Response code: %ld", res?.statusCode);
if ((res?.statusCode)! >= 200 && (res?.statusCode)! < 300) {
let responseData:NSString = NSString(data:urlData!, encoding:String.Encoding.utf8.rawValue)!
NSLog("Response ==> %@", responseData);
let jsonData:NSDictionary = try JSONSerialization.jsonObject(with: urlData!, options:JSONSerialization.ReadingOptions.mutableContainers) as! NSDictionary
let success:NSInteger = jsonData.value(forKey: "success") as! NSInteger
NSLog("Success: %ld", success);
if(success == 1)
{
// do something, code removed
} else {
var error_msg:NSString
if jsonData["error_message"] as? NSString != nil {
error_msg = jsonData["error_message"] as! NSString
} else {
error_msg = "Unknown Error"
}
// show alert
}
}
}
}
}
Спасибо за ваш ответ! Я не уверен, как я могу отправить свои данные и как я могу разобрать полученный JSON? – Panda
@Panda Ваш запрос будет таким же, как и вы, JSON хорошо разбирался. Просто может быть немного изменений, которые вам нужно будет сделать для использования в Swift 3. Вы можете легко это сделать. Просто погрузитесь в это первое. happy Coding .. !! –