[HttpClient]: How to find the final URI after redirects

本文介绍两种方法来追踪HTTP请求在重定向过程中的位置变化:一是使用本地HttpContext获取最终请求位置;二是通过自定义RedirectStrategy记录所有中间重定向位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.  Use a local HttpContext

To get final request location: 
-------- 
HttpClient httpClient = new DefaultHttpClient(); 
HttpGet httpget = new HttpGet("https://localhost/"); 

HttpContext context = new BasicHttpContext(); 
HttpResponse response = httpClient.execute(httpget, context); 
HttpEntity entity = response.getEntity(); 
if (entity != null) { 
    entity.consumeContent(); 
} 
HttpUriRequest request = (HttpUriRequest) context.getAttribute( 
        ExecutionContext.HTTP_REQUEST); 

System.out.println(request.getURI()); 


2. User a custom RedirectStrategy

To get all intermediate redirect locations: 
-------- 
DefaultHttpClient httpClient = new DefaultHttpClient(); 

httpClient.setRedirectStrategy(new DefaultRedirectStrategy() { 

    @Override 
    public URI getLocationURI(HttpResponse response, HttpContext 
context) throws ProtocolException { 
        URI uri = super.getLocationURI(response, context); 
        System.out.println("redirect - > " + uri); 
        return uri; 
    } 
    
}); 
        
HttpGet httpget = new HttpGet("https://localhost/"); 
HttpResponse response = httpClient.execute(httpget); 
HttpEntity entity = response.getEntity(); 
if (entity != null) { 
    entity.consumeContent(); 
} 


Reference:

http://old.nabble.com/Finding-out-the-URL-after-a-redirect-td20433446.html

http://old.nabble.com/POST-response-with-status-302-doesn't-redirect-td30134484.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值