Alamofire: رمز الحالة: 404 ، لكن response.result = SUCCESS

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

1

response serializer support

التعليق الأكثر فائدة

أنت لا تتحقق من صحة رمز حالة الاستجابة ، لذلك من المحتمل أن يعيد 404 حالة .Success . كل ما يفعله المتسلسل responseData هو التحقق من عدم وجود خطأ (والذي لن يكون موجودًا لأنك لا تتحقق من صحة رمز حالة الاستجابة) أو أن البيانات موجودة.

public static func dataResponseSerializer() -> ResponseSerializer<NSData, NSError> {
    return ResponseSerializer { _, _, data, error in
        guard error == nil else { return .Failure(error!) }

        guard let validData = data where validData.length > 0 else {
            let failureReason = "Data could not be serialized. Input data was nil or zero length."
            let error = Error.errorWithCode(.DataSerializationFailed, failureReason: failureReason)
            return .Failure(error)
        }

        return .Success(validData)
    }
}

في حالتك ، أنت تتلقى 404 الذي لا يُلقي بخطأ ، ويعيد الخادم البيانات. لذلك ، نجح المتسلسل responseData . إذا كنت تتوقع ظهور خطأ دائمًا في 404 ، فيجب عليك أيضًا استخدام طريقة .validate(statusCode: [200]) قبل المتسلسل responseData . مزيد من المعلومات في قسم التحقق من صحة README.

في المستقبل ، تكون أسئلة مثل هذه أكثر ملاءمة لـ Stack Overflow بعلامة alamofire . نستخدم GitHub لطلبات الأخطاء والميزات. 🍻


من إرشادات المساهمة الخاصة بنا

يسأل اسئلة

نحن لا نستخدم GitHub كمنتدى دعم. بالنسبة لأية أسئلة استخدام ليست خاصة بالمشروع نفسه ، يرجى طرحها على Stack Overflow بدلاً من ذلك. من خلال القيام بذلك ، ستكون أكثر قدرة على حل مشكلتك بسرعة ، وستسمح لأي شخص آخر لديه نفس السؤال بالعثور على الإجابة. يسمح هذا أيضًا للمشرفين بالتركيز على تحسين المشروع للآخرين.

ال 3 كومينتر

أنت لا تتحقق من صحة رمز حالة الاستجابة ، لذلك من المحتمل أن يعيد 404 حالة .Success . كل ما يفعله المتسلسل responseData هو التحقق من عدم وجود خطأ (والذي لن يكون موجودًا لأنك لا تتحقق من صحة رمز حالة الاستجابة) أو أن البيانات موجودة.

public static func dataResponseSerializer() -> ResponseSerializer<NSData, NSError> {
    return ResponseSerializer { _, _, data, error in
        guard error == nil else { return .Failure(error!) }

        guard let validData = data where validData.length > 0 else {
            let failureReason = "Data could not be serialized. Input data was nil or zero length."
            let error = Error.errorWithCode(.DataSerializationFailed, failureReason: failureReason)
            return .Failure(error)
        }

        return .Success(validData)
    }
}

في حالتك ، أنت تتلقى 404 الذي لا يُلقي بخطأ ، ويعيد الخادم البيانات. لذلك ، نجح المتسلسل responseData . إذا كنت تتوقع ظهور خطأ دائمًا في 404 ، فيجب عليك أيضًا استخدام طريقة .validate(statusCode: [200]) قبل المتسلسل responseData . مزيد من المعلومات في قسم التحقق من صحة README.

في المستقبل ، تكون أسئلة مثل هذه أكثر ملاءمة لـ Stack Overflow بعلامة alamofire . نستخدم GitHub لطلبات الأخطاء والميزات. 🍻


من إرشادات المساهمة الخاصة بنا

يسأل اسئلة

نحن لا نستخدم GitHub كمنتدى دعم. بالنسبة لأية أسئلة استخدام ليست خاصة بالمشروع نفسه ، يرجى طرحها على Stack Overflow بدلاً من ذلك. من خلال القيام بذلك ، ستكون أكثر قدرة على حل مشكلتك بسرعة ، وستسمح لأي شخص آخر لديه نفس السؤال بالعثور على الإجابة. يسمح هذا أيضًا للمشرفين بالتركيز على تحسين المشروع للآخرين.

اقدر هذا فعلا

أنا أعاني من هذه المشكلة ... شكرا جزيلا لك.

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