2012-12-18 7 views
0

원격 WS와 상호 작용하는 iOS 앱에서 작업 중입니다. WS의 URL이 수시로 변경 될 수 있으므로 앱은 모든 요청을 WS의 실제 URL로 리디렉션하는 고정 된 안정 URL로 보내야합니다. lastRequest이 전송되었습니다 원래 요청의 사본입니다iOS에서 빈 본문으로 리디렉션 된 HTTP POST 요청 처리

- (NSURLRequest *)connection: (NSURLConnection *)connection 
     willSendRequest: (NSURLRequest *)request 
     redirectResponse: (NSURLResponse *)redirectResponse { 

if (redirectResponse) { 
    NSMutableURLRequest *r = [lastRequest mutableCopy]; 
    [r setURL: [request URL]]; 

    return r; 
} else { 
    return request; 
} 
} 

:

여기 내 코드입니다.

여기 내 문제가 있습니다. 이유는 모르겠지만 새로운 요청 인 r은 빈 몸체 (매개 변수 없음)와 함께 전송됩니다. 원래 요청의 정확한 사본을 사용하더라도 원래 요청의 모든 매개 변수가 손실 된 것처럼 보입니다.

너희들은 어떻게 생각하니? 이 문제를 어떻게 해결할 수 있습니까?

감사합니다.

+0

은 lastRequests postBody good입니까? :: assert ([[lastRequest HTTPBody] length]); –

+0

ARC를 사용하지 않는 경우 r을 유지해야 할 수 있습니다. mutableCopy 대신 copy를 사용해 볼 수도 있습니다. –

답변

0

HTTP 표준에 따르면 리디렉션 된 요청이 GET 메서드를 사용해야하므로 요청 본문이 비어 있다는 사실과 관련이 있다고 생각합니다.

나는 r 대신 nil을 반환하고 올바른 URL로 새 요청을 생성하여 문제를 해결했습니다.