Alamofire: هل النجاح دائمًا صحيح ، حتى مع وجود رمز خطأ

تم إنشاؤها على ١١ أكتوبر ٢٠١٥  ·  3تعليقات  ·  مصدر: Alamofire/Alamofire

يرسل الخادم رمز الاستجابة 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")}

        }

يكون النجاح دائمًا صحيحًا ، مهما كان الرمز الذي يرسله الخادم مرة أخرى.

question response serializer

ال 3 كومينتر

بشكل افتراضي ، يسجل 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 .
هل هناك أي حل أو حل بديل؟
شكرا

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات