2009-05-27 12 views
28

Potrzebuję sprawdzić i ocenić kody stanu HTTP w mojej aplikacji na iPhone'a. Mam obiektu NSURLRequest oraz NSURLConnection że pomyślnie (chyba) połączyć się z witryną:Pobieranie kodów stanu HTTPResponse/HTTPRequest iPhone SDK?

// create the request 
NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.apple.com/"] 
         cachePolicy:NSURLRequestUseProtocolCachePolicy 
        timeoutInterval:60.0]; 
// create the connection with the request 
// and start loading the data 
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 
if (theConnection) { 
    // Create the NSMutableData that will hold 
    // the received data 
    // receivedData is declared as a method instance elsewhere 
    receivedData=[[NSMutableData data] retain]; 
} else { 
    // inform the user that the download could not be made 
} 

dostałem ten kod tutaj: http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html

ale nie (o ile mogę zobacz) powiedz cokolwiek o dostępie do kodów statusu HTTP.

Ktoś ma jakiś pomysł, jak nawiązać połączenie z witryną, a następnie sprawdzić kody stanu HTTP tego połączenia?

Z góry dzięki!

Odpowiedz

76

To jak to zrobić:

#pragma mark - 
    #pragma mark NSURLConnection Delegate Methods 
    - (void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response { 
     NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response; 
     int responseStatusCode = [httpResponse statusCode]; 
    } 

Ale używam asynchronicznego NSURLConnection, więc to nie może pomóc. Ale mam nadzieję, że tak się stanie!

+0

Zrobiłem to, czego potrzebowałem. Jedynym problemem jest to, że jeśli adres URL/adres IP Addy nie istnieje, odpowiedź nie jest otrzymywana, więc aplikacja po prostu zawiesza się na zawsze. Obecnie szukam sposobu, aby rozwiązać ten problem ... wszelkie sugestie będą mile widziane ... – cmcculloh

+3

Spójrz na kod Reachabilty firmy Apple. Używaj tylko metody powiadamiania (domyślnie nie włączaj w kodzie, patrz komentarze w metodzie init) i zawsze ustaw host, który chcesz sprawdzić. http://stackoverflow.com/questions/477852/checking-for-internet-connectivity-in-objective-c –

Powiązane problemy