2008-10-25 24 views
21

Pracowałem nad tym, aby dowiedzieć się, jak odbierać nagłówki HTTP na żądanie wykonane przy użyciu NSURLConnection. Zwykle wniosek składa się z czymś tak prostym, jak następuje:Odbieranie nagłówków HTTP za pośrednictwem NSURLRequest/NSURLConnection w kakao

NSURLConnection *connection = [[NSURLConnection alloc] 
    initWithRequest:request 
     delegate:self]; 

Jedynym sposobem Ja osobiście znaleźć w obfitej dokumentacji Apple otrzymać nagłówki odpowiedzi jest poprzez synchronicznego połączenia stosując następujące metody klasy NSURLConnection:

+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error 

Tutaj mogę łatwo odwoływać się do obiektu odpowiedzi typu NSURLResponse. Problem polega na tym, że nie jestem gotowy do składania synchronicznych żądań za pośrednictwem urządzenia mobilnego, zwłaszcza w przypadku sieci o dużym opóźnieniu, takiej jak EDGE. Czy możliwe jest uzyskanie podobnych rezultatów z domyślnym, asynchronicznym zachowaniem NSURLConnection?

Odpowiedz

42

W delegacie połączenia dodaj metodę -connection:didReceiveResponse:. Jeśli wykonujesz standardowe żądanie HTTP, przekazany obiekt NSURLResponse będzie w rzeczywistości obiektem NSHTTPURLResponse i odpowie na wiadomość -allHeaderFields. To powinno być tym, czego szukasz.

+0

Uznałem, że i my. Teraz wyodrębniłem jedno pole nagłówka zawierające więcej informacji: 'Www-Authenticate: Digest realm = \" test \ "qop = \" auth \ "'i tak dalej. Czy istnieje możliwość uzyskania/ustawienia tych danych jako dodatkowego dict lub tablicy? –

Powiązane problemy