大家好,我现在已经两天了,我正试图解决我的问题。
我有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
感谢您的帮助,这将非常有帮助。
答案 0 :(得分:0)
您提供的请求链接确实返回普通的200 OK,而不是重定向。 您使用浏览器体验的重定向是通过javascript触发的,它不是HTTP重定向(301等)。
AsyncHttpClient是一个HTTP客户端,而不是浏览器,所以它不会执行JS。
如果您想要遵循此类重定向,则必须解析页面,抓取目标网址,然后手动发送第二个请求。