http 요청을 사용하여 데이터를받는 네트워크 Android 애플리케이션을 작성하고 있습니다. 데이터는 HTML 형식입니다. 저는 Apache HttpClient와 JSoup를 사용합니다.Java에서 HTTP 요청 리디렉션 처리
모바일 인터넷 제공 업체와 교통 체증이 났을 때 저는 항상 돈을 지불해야한다고 말하는 의료기관의 페이지로 리디렉션됩니다. 물론,이 페이지를 파싱하는 것은 나쁜 생각입니다.
발생 된 페이지 대체를 어떻게 감지합니까?
http 요청을 사용하여 데이터를받는 네트워크 Android 애플리케이션을 작성하고 있습니다. 데이터는 HTML 형식입니다. 저는 Apache HttpClient와 JSoup를 사용합니다.Java에서 HTTP 요청 리디렉션 처리
모바일 인터넷 제공 업체와 교통 체증이 났을 때 저는 항상 돈을 지불해야한다고 말하는 의료기관의 페이지로 리디렉션됩니다. 물론,이 페이지를 파싱하는 것은 나쁜 생각입니다.
발생 된 페이지 대체를 어떻게 감지합니까?
이 코드는 귀하가 요청한 페이지가 아닌 경우 귀하의 요청에 대한 최종 대상을 알기 쉽게 알려주며 제공자 페이지입니다.
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);
감사
감사! 이것은 실제로 작동합니다! – user1256821
제공 업체에 즉시 200 OK
를 반환하지만, 당신이 요청한 리소스를 제공하지 않음으로써 당신에게 거짓말을하는 경우는, 당신의 최선의 선택은 사용자 지정 HTTP 응답 헤더를 설정하는 아마 당신의 클라이언트 계속하기 전에 확인할 수 있습니다.
적절한 300 상태 코드가 있습니까? 아니면 공급자가 "잘못된"데이터를 반환합니까? – chrylis
상태 코드로 200 (OK)가 표시됩니다. – user1256821