2016-08-06 1 views
1

안녕하세요. 이제 2 일이 다되어서 문제를 해결하려고합니다. URL 링크를 사용하여 AsyncHttpClient 클래스를 호출하려고하는데 링크로 리디렉션 될 때까지 기다려야합니다. 문제는 http get 요청이 HTTP 응답 200으로 돌아오고 리디렉션을 기다리지 않고 http 콘텐츠로 돌아옵니다. 제발 도와 주실 수 있나요?
여기Java 비동기식으로 HTTP 리디렉션을 기다립니다.

private static String getAsyncRedirectedUrlFromUrl(String url) { 
    AsyncHttpClient asyncHttpClient = new DefaultAsyncHttpClient(); 
    Future<Response> response = asyncHttpClient.prepareGet(url).execute(new AsyncCompletionHandler<Response>() { 

     @Override 
     public Response onCompleted(Response response) throws Exception { 
      // Do something with the Response 
      // ... 
      response.getLocalAddress(); 
      response.getStatusCode(); 
      return response; 
     } 

     @Override 
     public void onThrowable(Throwable t) { 
      // Something wrong happened. 
     } 
    }); 
    try { 
     System.out.println("Redirection:" + response.get().getHeader("location")); 
     return response.get().getHeader("location"); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (ExecutionException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return ""; 
    } 

요청 링크입니다 : Request LINK
그리고 여기에 예상 결과 재 링크입니다 :

Expect LINK이 매우 helpfull 것이다 당신의 도움을 주셔서 감사
다음은 코드입니다.

답변

0

실제로 제공 한 귀하의 요청 링크는 리디렉션이 아닌 일반 200 OK를 반환합니다. 브라우저에서 발생하는 리디렉션은 자바 스크립트에서 발생하지만 HTTP 리디렉션 (301 등)이 아닙니다.

AsyncHttpClient는 브라우저가 아닌 HTTP 클라이언트이므로 JS를 실행하지 않습니다.

리디렉션을 따르려면 페이지를 구문 분석하고 대상 URL을 잡고 두 번째 요청을 수동으로 보내야합니다.

+0

도움을 주셔서 감사합니다 :-), 나는 셀렌과 함께 문제를 해결할 수있게되었습니다. – Mehdi

관련 문제