AFHTTPClient से विफलता ब्लॉक में http स्थिति कोड प्राप्त करने का एक आसान तरीका है?


94

मैं देख रहा हूं कि स्वीकृत http स्थिति कोडों की एक सूची है जिसे मैं संशोधित कर सकता हूं, लेकिन मुझे लगता है कि यदि मैं विफलता खंड में http स्थिति कोड प्राप्त कर सकता हूं तो यह क्लीनर होगा।

ठीक है, ऑपरेशन ऑब्जेक्ट के साथ जवाब मिला

failure:^(AFHTTPRequestOperation *operation, NSError *error){ 
        NSLog(@"error code %d",[operation.response statusCode]);
}];

जवाबों:


136

ठीक है, ऑपरेशन ऑब्जेक्ट के साथ जवाब मिला

failure:^(AFHTTPRequestOperation *operation, NSError *error){ 
       NSLog(@"error code %d",[operation.response statusCode]);
}];

यह भी मददगार हो सकता है[operation.request HTTPMethod]
defvol

2
मुझे पता है कि यह पुराना है, लेकिन @wilhelmbot - HTTPMethod आपको GET / POST / PUT ... इत्यादि कुछ दे सकता है, संभवतः प्रतिक्रिया की स्थिति की जाँच के लिए सहायक नहीं है।
शॉर्टस्टफसुशी

111

AFNetworking के नए संस्करणों में, आप त्रुटि से प्रतिक्रिया ऑब्जेक्ट पुनः प्राप्त कर सकते हैं:

[[[error userInfo] objectForKey:AFNetworkingOperationFailingURLResponseErrorKey] statusCode]

यह आसान है यदि आप लाइन को आगे बढ़ाने में त्रुटि कर रहे हैं और प्रतिक्रिया ऑब्जेक्ट के आसपास से गुजरना नहीं चाहते हैं।


आपको पहले अंतर्निहित त्रुटि प्राप्त करने की आवश्यकता हो सकती है। NSError *underlyingError = error.userInfo[@"NSUnderlyingError"]
ओनाटो

19

AFNetworking 3.0 के लिए , का उपयोग करें

failure:^(NSURLSessionTask *operation, NSError *error) {
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)operation.response;
    httpResponse.statusCode;
    NSLog(@"status code: %li", (long)httpResponse.statusCode);
}

13

NSInteger OperationStatusCode = [operation.error code];

NSInteger httpStatusCode = Operation.response.statusCode;

यदि अनुरोध रद्द / अनुपलब्ध / समय समाप्त हो गए थे, httpStatusCodeतो हमेशा रहेगा 0

वैकल्पिक रूप से आप इस मुद्दे को समझ कर पहचान सकते हैं operationStatusCode। यह एक NSErrorवस्तु है।

  • यदि यह अनुरोध को संसाधित करने के लिए / टाइमआउट / कोई नेटवर्क नहीं पहुंच operationStatusCodeसकता है , तो होगा -1009
  • यदि आप कार्यों को रद्द कर देते हैं, तो कतार चालू operationStatusCodeहो जाएगी -999

आप Apple के प्रलेखनNSError में अन्य सभी कोड और उनके विवरण देख सकते हैं


7

मैं स्विफ्ट 3 के साथ स्थिति कोड प्राप्त करने में सक्षम हूं:

((error.userInfo[AFNetworkingOperationFailingURLResponseErrorKey])
    as! HTTPURLResponse).statusCode

0

यह मेरे लिए काम है आपके अनुरोध के नीचे पंक्ति जोड़ें

manager.requestSerializer = [AFJSONRequestSerializer serializer];

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.