34

प्राप्त करना, वेब सर्वर से प्रतिक्रिया के लिए मुझे http स्थिति कोड (404,500 200 आदि) कैसे प्राप्त हो सकता है। मुझे लगता है कि यह NSUrlConnectionDelegate में है।NSUrlConnectionDelegate - आईओएस में http स्टेटस कोड

उद्देश्य-सी या मोनोटच .NET उत्तर ठीक है।

+1

http://stackoverflow.com/questions/4938010/how-do-i-check-an-http-request-response-status-code-from-ios की संभावित डुप्लिकेट। – csano

+0

मोनोटच –

उत्तर

87

हाँ, आप प्रतिनिधि विधि -didRecieveResponse में स्थिति कोड प्राप्त कर सकते हैं:

- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ 
    NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response; 
    int code = [httpResponse statusCode]; 
} 
+2

का अनुरोध करने के लिए संपादित प्रश्न नोट करें कि, डॉट नोटेशन के उपयोग के बावजूद, स्टेटसोड एक संपत्ति नहीं है। – albertamg

+2

@albertamg, वास्तव में ... धन्यवाद, भ्रम से बचने के लिए इसे सही करेगा – Vladimir

+2

मुझे एहसास है कि यह स्पष्ट है, लेकिन मैं इसे पूरी तरह से पूर्णता के लिए नोट कर दूंगा: कहीं और आपको एक 'NSURLResponse' के जवाब में HTTP अनुरोध (जैसे 'sendAsynchronousRequest के समापन हैंडलर: कतार: समापन हैंडलर: ', आप' NSRLResponse' को 'NSHTTPURLResponse' में बिल्कुल उसी तरह से डाले जा सकते हैं। –

11
NSHTTPURLResponse* urlResponse = nil; 
NSError *error = nil; 
responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error]; 

अतुल्यकालिक अनुरोध भी NSHTTPURLResponse पाने के लिए एक तरह से होना चाहिए ..

आप स्थिति कोड प्राप्त इस तरह:

int statusCode = [urlResponse statusCode]; 
int errorCode = error.code; 

कुछ उपयोग किए गए त्रुटि कोड (जैसे 404) के मामले में जी और त्रुटि में डाल दिया लेकिन एक अलग कोड के साथ (401 -1012 होगा)।

+1

त्रुटि आवंटित करने की कोई आवश्यकता नहीं है - बस जांचें कि क्या त्रुटि वापसी पर शून्य नहीं है - अगर ऐसा नहीं है तो आपके पास त्रुटि कोड होना चाहिए – gheese

+0

धन्यवाद ढेर, जिसने मेरी मदद की। 401 के लिए धन्यवाद, कि त्रुटि मैं जाल करने की कोशिश कर रहा था। error.code = -1012 जैसा आपने कहा था। –

+0

इससे मुझे बहुत मदद मिली, धन्यवाद! – Daniel

1

this other stackoverflow question को देखते हुए ऐसा लगता है जैसे आप - (void)connection:(NSURLConnection *)aConnection didReceiveResponse:(NSURLResponse *)response प्रतिनिधि विधि में http स्थिति कोड संभाल कर सकते हैं लग रहा है:

- (void)connection:(NSURLConnection *)aConnection didReceiveResponse:(NSURLResponse*)response 
{ 
    if ([response isKindOfClass: [NSHTTPURLResponse class]]) 
     statusCode = [(NSHTTPURLResponse*) response statusCode]; 
} 
3

यहाँ कैसे उन सी # उपयोगकर्ताओं के लिए नेट के लिए MonoTouch में यह करने के लिए है। यह NSUrlConnectionDelegate में है।

public override void ReceivedResponse (NSUrlConnection connection, NSUrlResponse response) 
{ 
    if (response is NSHttpUrlResponse) 
    { 
    var r = response as NSHttpUrlResponse; 
    Console.WriteLine (r.StatusCode); 
    } 
} 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^