2012-05-11 2 views
3

서버 (aspx)에서 html 응답을 얻으려고합니다.요청에 get 매개 변수를 사용하여 URL 리디렉션을 처리하는 방법은 무엇입니까?

NSString *urlstr = [[NSString alloc] initWithFormat:@"http://www.someSiteThatRedirectsWithGetParameters.com?parameter1=1&parameter2=2"]; 

NSURL *url = [ NSURL URLWithString:urlstr];  
NSMutableURLRequest *urlRequest = [ NSURLRequest requestWithURL: url]; 

NSData data = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error]; 

NSURL *lastURL=[response URL]; 

NSLog(@"Last url %@", lastURL); 

나는 www.someSiteThatRedirectsWithGetParameters.com로 lastURL을 받고, 따라서 원래 요청 된 URL에 대한 HTML 페이지를 받고 있지 않다.

왜 이렇게하고 어떻게 해결할 수 있습니까?

이 모두 지금까지 시도 무엇

편집 : Get the last redirected url in iOS 5? 는하지만 난 아직도 내가 즉하려고 무엇을 달성 할 수 아니에요 : 원래 GET 요청의 HTML 페이지 소스를 얻을 수 (예정 리디렉션을 통해) URL에 매개 변수가 있습니까?

+0

매개 변수를 예상하는 사이트는 리디렉션하지 않아야합니다 ... 또한 게시물 요청을 사용하는 것이 바람직하므로 사람들이 보내는 편지를 쉽게 파악할 수 없습니다. – Martol1ni

+0

나는 사이트를 운영하는 사람이 아니므로 사이트가해야하거나하지 말아야 할 것을 통제하지 못한다. 나는 요청을 보낸 사람이다. –

+0

최근 게시물을 확인하십시오. – Martol1ni

답변

0

두 가지 요청을 보내는 방법을 시도합니다. 첫 번째 요청을 보내면 redirectURL이 응답이됩니다. 그런 다음 GET 매개 변수를 사용하여 해당 URL에 요청을 보내면 응답의 새 URL을 만드십시오. 나는 그것을 시도하지 않았다, 그러나 나는 그것이 일할 수 있었다고 생각한다.

1

내가 www.someSiteThatRedirectsWithGetParameters.com 때문에 원래의 HTML 페이지가 URL을 요청받지으로 lastURL을 얻고있다.

요청이 리디렉션되는 경우 이는 연결하려는 서버가 요청한 URL에 페이지가 없다는 것을 알려주고 대신 리디렉션 된 URL을 사용해야합니다 . 이것이 바로 리디렉션 응답의 요점입니다.

응답이 HTTP 303 인 경우 새 요청이 POST에서 GET으로 바르게 변경됩니다. 이는 페이지 새로 고침이 바람직하지 않은 결과로 원래 요청을 다시 제출하는 경우를 피하기 위해 때로는 수행됩니다. 이 경우 요청을 일부 URL에 POST하고 서버는 요청을 승인하지만 클라이언트를 궁극적으로 서버의 응답을 표시하는 다른 URL로 리디렉션하여 응답합니다.

왜 이런가요? 어떻게 해결할 수 있습니까?

위의 '이유'를 설명했습니다. "솔루션"은 서버의 응답을 수락하고 서버의 응답이 포함 된 URL로 리디렉션을 수행하는 것입니다.

+0

무엇이 혼란 스럽습니까, 웹 브라우저에서 원래 요청을 사용하면 요청한 페이지가로드되지만 동일한 코드가 HTML 데이터를 가져올 때 사실이 아닙니다. ( –

+0

http : // www. .bookfinder4u.com/IsbnSearch.aspx? isbn = 0755315316 & mode = direct & option = all & country = usa 언급 한대로 동작하는 브라우저 중 하나입니다. 브라우저를 통해 링크를 열면 검색 페이지가 표시되지만 동일한 페이지를 요청하면 동기식/비동기식 http 요청의 경우, 얻을 수있는 데이터는 홈 페이지 (http://bookfinder4u.com) –

+0

일 것입니다. 그런 다음 보내는 요청을 살펴보고 브라우저에 요청해야합니다 서로 다른 점을보기 위해 보내는 것이므로 서버가 왜 다르게 반응하는지 파악할 수 있습니다.서버가 전송중인 사용자 에이전트를 인식하지 못하거나 브라우저에 요청에 포함되거나 포함되지 않은 다른 헤더가 마음에 들지 않을 수 있습니다. [Charles proxy] (http://www.charlesproxy.com/)와 같은 도구는 이러한 상황에서 매우 중요합니다. – Caleb

관련 문제