Server mengirimkan kode respons 404, tetapi sepertinya kerangka kerja menafsirkannya sebagai sukses.
Kode:
Alamofire.request(.GET, Constants.Path.rootUrl + "/api/users", parameters: ["username" : usernameString, "limit":3] , headers: ["tb-token" : userToken!])
.responseJSON { response in
print(response.request) // original URL request
print(response.response) // URL response
print(response.data) // server data
print(response.result) // result of response serialization
let results = response.result
if let JSON = response.result.value {
if response.result.isSuccess == true {
print("Success with JSON: \(JSON)")
self.tableView.hidden = false
self.resultsDict = results.value as! NSArray
let resultsNumber = results.value!.count
self.numberOfResults.text = "Results(\(resultsNumber))"
self.numberOfResults.hidden = false
self.resultsN = resultsNumber
self.loadedMode = true
self.tableView.reloadData()
self.tableView.hidden = false
}
}
else {print("error")}
}
isSuccess selalu benar, kode apa pun yang dikirim server kembali.
Secara default Alamofire mendaftarkan respons apa pun yang berhasil melewati serializer respons (dalam contoh Anda, JSONResponseSerializer
digunakan oleh .responseJSON
) sebagai sukses. Jika Anda ingin memvalidasi kode respons permintaan Anda, cukup tambahkan .validate()
ke rantai permintaan Anda. Ini akan memastikan bahwa kode respons Anda antara 200 dan 299, inklusif. Anda juga dapat menyesuaikan validasi menggunakan metode yang dijelaskan dalam dokumentasi .
Dalam kasus Anda:
Alamofire.request(.GET, Constants.Path.rootUrl + "/api/users", parameters: ["username" : usernameString, "limit":3] , headers: ["tb-token" : userToken!])
.validate()
.responseJSON { response in }
Terima kasih, bekerja seperti pesona!
Terima kasih, berhasil. Menggunakan .validate()
respons divalidasi.
Tetapi ada masalah lain, menggunakan .validate()
Saya tidak mendapatkan nilai respons: response.result.value
.
Apakah ada solusi, atau solusi?
Terima kasih