يرسل الخادم رمز الاستجابة 404 ، لكن يبدو أن إطار العمل يفسره على أنه ناجح.
شفرة:
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")}
}
يكون النجاح دائمًا صحيحًا ، مهما كان الرمز الذي يرسله الخادم مرة أخرى.
بشكل افتراضي ، يسجل Alamofire أي استجابة تجعله من خلال مُسلسل الاستجابة (في المثال الخاص بك ، JSONResponseSerializer
المستخدم بواسطة .responseJSON
) كنجاح. إذا كنت ترغب في التحقق من صحة رمز الاستجابة لطلبك ، فما عليك سوى إضافة .validate()
إلى سلسلة الطلبات الخاصة بك. سيضمن ذلك أن يكون رمز الاستجابة الخاص بك بين 200 و 299 ، ضمناً. يمكنك أيضًا تخصيص التحقق باستخدام الطرق الموضحة في الوثائق .
في حالتك:
Alamofire.request(.GET, Constants.Path.rootUrl + "/api/users", parameters: ["username" : usernameString, "limit":3] , headers: ["tb-token" : userToken!])
.validate()
.responseJSON { response in }
شكرا لك ، عملت مثل السحر!
شكرا لك ، عملت. باستخدام .validate()
يتم التحقق من صحة الاستجابة.
ولكن هناك مشكلة أخرى ، باستخدام .validate()
لا أحصل على قيمة الاستجابة: response.result.value
.
هل هناك أي حل أو حل بديل؟
شكرا