gpt4 book ai didi

java - HTTPClient - 捕获所有重定向的列表

转载 作者:行者123 更新时间:2023-11-29 06:08:18 30 4
gpt4 key购买 nike

是否可以使用 HttpClient 从 URL 捕获完整的重定向历史记录?

例如,我们有 URL-A,它重定向到 URL-B,最终将我们发送到 URL-C,有没有办法捕获 URL A、B 和 C 是什么?

最明显的选择是手动查找 header 中的位置标记,并在我们到达 HTTP 200 时停止。这不是一个简单的过程,因为我们需要查找循环重定向等...

现在我假设以下内容:

    HttpContext context = new BasicHttpContext(); 
HttpResponse response = hc.execute(httpget, context);
//.....
for(URI u : ((RedirectLocations)context.getAttribute(DefaultRedirectStrategy.REDIRECT_LOCATIONS)).getAll()){
System.out.println(u);
}

适用于此用例吗?

最佳答案

HttpClient支持自定义RedirectHandler .您可以覆盖默认实现 ( DefaultRedirectHandler ) 以捕获所有重定向。

DefaultHttpClient hc = new DefaultHttpClient();

HttpGet httpget = new HttpGet("http://google.com");
HttpContext context = new BasicHttpContext();


hc.setRedirectHandler(new DefaultRedirectHandler() {
@Override
public URI getLocationURI(HttpResponse response,
HttpContext context) throws ProtocolException {

//Capture the Location header here
System.out.println(Arrays.toString(response.getHeaders("Location")));

return super.getLocationURI(response,context);
}
});

HttpResponse response = hc.execute(httpget, context);

关于java - HTTPClient - 捕获所有重定向的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7860188/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com