2008-10-25 7 views
21

NSURLConnection으로 이루어진 요청을 통해 HTTP 헤더를 수신하는 방법을 파악하고 있습니다. 일반적으로 요청은 다음과 같은 간단한로 구성되어 있습니다코코아에서 NSURLRequest/NSURLConnection을 통해 HTTP 헤더 수신

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

개인적으로 응답 헤더를받을 수있는 애플의 풍부한 문서에서 발견 한 유일한 방법은 다음있는 NSURLConnection 클래스의 방법을 사용하여 동기 호출을 통해입니다 :

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

여기서 NSURLResponse 유형의 응답 개체를 쉽게 참조 할 수 있습니다. 여기서 문제는 모바일 장치, 특히 EDGE와 같이 대기 시간이 긴 네트워크를 통해 동기식 요청을 할 준비가되지 않았다는 것입니다. NSURLConnection의 기본 비동기 동작으로 비슷한 결과를 얻을 수 있습니까?

답변

42

연결 대리인으로 -connection:didReceiveResponse: 메서드를 추가하십시오. 표준 HTTP 요청을 수행하는 경우 전달 된 NSURLResponse 객체는 실제로 NSHTTPURLResponse 객체이며 -allHeaderFields 메시지에 응답합니다. 이것은 당신이 찾고있는 것이어야합니다.

+0

나는 우리도 그렇게 생각했다. 이제 나는 더 많은 정보를 담고있는 하나의 헤더 필드를 추출했다 :'Www-Authenticate : Digest realm = \ "test \"qop = \ "auth \" '등등. 이러한 세부 정보를 추가 dict 또는 배열로 가져 오거나 설정할 수 있습니까? –