2013-05-31 3 views
1

내 응용 프로그램이 HTTP 클라이언트 오류를 ​​처리하도록하려고합니다. 이상적으로는, 나는 그와 같은 오류가 발생할 때마다 그 원인에 관계없이 정적 메서드를 실행하고 싶다.RestKit 요청이 HTTP 오류에서 멈춤.

나는 뭔가 잘못하고있는 것 같습니다. 나는 RKDynamicResponseDescriptor 메서드를 호출하려고 시도했지만, 호출되지 않습니다. 내 서버 오류로 응답 할 때마다, 요청이 결코 완료되지 (네트워크 작동 표시 등 회전을 유지하고 AFNetworkingOperationDidFinishNotification는 게시되지 않습니다.)

내가 이런 새로운 AFHTTPRequest 요청을 생성하여 동작을 재현 할 수 있습니다

request = [[RKObjectManager sharedManager].HTTPClient requestWithMethod:@"GET" path:@"events" parameters:nil]; 
AFHTTPRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request 
        success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
         NSLog(@"%@", JSON); 
        } 
        failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { 
         NSLog(@"Request Failed with Error: %@, %@", error, error.userInfo); 
        }]; 

success 블록도 failure 블록도 호출되지 않습니다. 첫 번째 줄을

request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:url]]; 

으로 바꿉니다. RestKit에서 HTTP 오류 응답을 처리하도록하려면 어떻게해야합니까?

편집 1 : 서버가 인증 시도와 함께 401을 반환 할 때 두 경우에 분명히 발생합니다. 에 중단 점을 설정하려고 시도했지만 didReceiveAuthenticationChallenge이 트리거되지 않습니다. My Fiddler는 단 하나의 요청이 전송되었음을 보여줍니다.

답변

1

많은 문제가 발생하면이 문제의 원인을 발견했다고 생각합니다. AFUrlConnectionRequest 클래스는 SSL 핀 고정이 사용되는 경우 connection:willSendRequestForAuthenticationChallenge: 대리자 메서드를 구현합니다. 인증 챌린지가 SSL과 관련이없는 경우 구현은 단순히 반환합니다. documentation of NSUrlConnectionDelegate에서

:

이 방법은 대리인이 한 번에 연결 인증에 대한 정보통 결정을 내릴 수 있습니다. canAuthenticateAgainstProtectionSpace :,

  • 연결 : 대리인이 방법을 구현하는 경우, 그것은

    • 연결을 구현 할 필요가 없습니다 didReceiveAuthenticationChallenge을 :,
    • connectionShouldUseCredentialStorage을 :.

    실제로 이러한 다른 방법은 호출되지 않습니다.

  • 방법은 호출되지 않으며, 따라서 RestKit 결코 요청이 나는이 정의 제거하여 문제를 해결 (401)

    HTTP의 오류가 발생하므로 대리자 메서드가 구현되지 않은 것을 알고 :

    #define _AFNETWORKING_PIN_SSL_CERTIFICATES_ 
    
    +0

    이 버그를보고 했습니까? 나는 내가 같은 문제에 직면하고 있다고 생각한다. – RonLugge

    관련 문제