Java Asrehronously等待http重定向

时间:2016-08-06 10:34:08

标签: java http asynchronous

大家好,我现在已经两天了,我正试图解决我的问题。 我有url链接我尝试使用AsyncHttpClient类调用,我需要等待链接重定向。问题是http get请求带有http响应200和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

感谢您的帮助,这将非常有帮助。

1 个答案:

答案 0 :(得分:0)

您提供的请求链接确实返回普通的200 OK,而不是重定向。 您使用浏览器体验的重定向是通过javascript触发的,它不是HTTP重定向(301等)。

AsyncHttpClient是一个HTTP客户端,而不是浏览器,所以它不会执行JS。

如果您想要遵循此类重定向,则必须解析页面,抓取目标网址,然后手动发送第二个请求。