2013-08-20 5 views
0

http 요청을 사용하여 데이터를받는 네트워크 Android 애플리케이션을 작성하고 있습니다. 데이터는 HTML 형식입니다. 저는 Apache HttpClient와 JSoup를 사용합니다.Java에서 HTTP 요청 리디렉션 처리

모바일 인터넷 제공 업체와 교통 체증이 났을 때 저는 항상 돈을 지불해야한다고 말하는 의료기관의 페이지로 리디렉션됩니다. 물론,이 페이지를 파싱하는 것은 나쁜 생각입니다.

발생 된 페이지 대체를 어떻게 감지합니까?

+0

적절한 300 상태 코드가 있습니까? 아니면 공급자가 "잘못된"데이터를 반환합니까? – chrylis

+0

상태 코드로 200 (OK)가 표시됩니다. – user1256821

답변

1

이 코드는 귀하가 요청한 페이지가 아닌 경우 귀하의 요청에 대한 최종 대상을 알기 쉽게 알려주며 제공자 페이지입니다.

DefaultHttpClient httpclient = new DefaultHttpClient(); 
HttpContext localContext = new BasicHttpContext(); 
HttpGet httpget = new HttpGet("http://www.google.com/"); 
HttpResponse response = httpclient.execute(httpget, localContext); 
HttpHost target = (HttpHost) localContext.getAttribute(
ExecutionContext.HTTP_TARGET_HOST);// this is the final page of the request 
System.out.println("Final target: " + target); 
HttpEntity entity = response.getEntity(); 
EntityUtils.consume(entity); 

감사

+0

감사! 이것은 실제로 작동합니다! – user1256821

0

제공 업체에 즉시 200 OK를 반환하지만, 당신이 요청한 리소스를 제공하지 않음으로써 당신에게 거짓말을하는 경우는, 당신의 최선의 선택은 사용자 지정 HTTP 응답 헤더를 설정하는 아마 당신의 클라이언트 계속하기 전에 확인할 수 있습니다.