java httpclient 重定向_用Apache HttpClient实现URL重定向
很多網站都使用了URL重定向技術,把一個原始請求從一個位置路由到另一個位置。原因可能是多方面的,比如域名轉發、URL縮寫、隱私保護、在同一網站維持相似的域名等。
本文講述怎樣使用Apache HTTPComponents HttpClient實現URL重定向。
本文使用的工具:
2.?JDK 1.7
1、創建Java項目
項目我命名為HttpClientTest,導入如下JAR包:
2、開發
1)創建和配置CloseableHttpClient
CloseableHttpClient是線程安全的,單個實例可用于處理多個HTTP請求。Http Client會自動處理所有的重定向,除非明確地使用disableAutomaticRetries()關閉自動重定向。
2)使用鏈接創建HttpGet實例,獲取重定向。
3)創建本地HTTP執行上下文HttpClientContext。
4)使用Http Client并傳遞本地實例HttpClientContext,執行HttpGet請求。
5)成功執行請求后,使用上下文對象來獲取所有的重定向位置。
6)關閉響應CloseableHttpResponse,釋放資源。
packagecom.ch.net;
importjava.io.IOException;
importjava.net.URI;
importjava.util.List;
importorg.apache.http.client.ClientProtocolException;
importorg.apache.http.client.config.CookieSpecs;
importorg.apache.http.client.config.RequestConfig;
importorg.apache.http.client.methods.CloseableHttpResponse;
importorg.apache.http.client.methods.HttpGet;
importorg.apache.http.client.protocol.HttpClientContext;
importorg.apache.http.impl.client.CloseableHttpClient;
importorg.apache.http.impl.client.HttpClients;
publicclassUrlRedirectionDemo?{
//?瀏覽器Agent
publicstaticString?USER_AGENT?="Mozilla/5.0?(Macintosh;?Intel?Mac?OS?X?10_7_3)?AppleWebKit/535.19?(KHTML,?like?Gecko)?Chrome/18.0.1025.151?Safari/535.19";
//?創建并配置HttpClient
privatestaticfinalCloseableHttpClient?httpClient?=?HttpClients
.custom()
.setUserAgent(USER_AGENT)
.setDefaultRequestConfig(
RequestConfig.custom()
.setCookieSpec(CookieSpecs.BROWSER_COMPATIBILITY)
.build()).build();
/**
*?根據給定的鏈接獲取所有的重定向位置
*?@param?link?給定的鏈接
*?@throws?ClientProtocolException
*?@throws?IOException
*/
publicList?getAllRedirectLocations(String?link)throwsClientProtocolException,?IOException{
List?redirectLocations?=?null;
CloseableHttpResponse?response?=?null;
try{
HttpClientContext?context?=?HttpClientContext.create();
HttpGet?httpGet?=?newHttpGet(link);
response?=?httpClient.execute(httpGet,?context);
//?獲取所有的重定向位置
redirectLocations?=?context.getRedirectLocations();
}?finally{
if(response!=null){
response.close();
}
}
returnredirectLocations;
}
publicstaticvoidmain(String[]?args)throwsClientProtocolException,?IOException{
//?輸入URL
String?link?=?"http://t.cn/zjYwrl3";
UrlRedirectionDemo?demo?=?newUrlRedirectionDemo();
List?allRedirectLocations?=?demo.getAllRedirectLocations(link);
if(allRedirectLocations!=null){
System.out.println(link);
for(URI?uri?:?allRedirectLocations){
System.out.println("|\nv\n"+?uri.toASCIIString());
}
}?else{
System.out.println("Not?found!");
}
}
}
如果使用默認的User-Agent設置,有些網站會返回HTTP 500狀態碼錯誤。一旦網站返回200狀態碼而且返回的HTML的內容是“500 server error”時,為保證兼容性,應該使用標準的Web瀏覽器的User-Agent字符串。
500 – 服務器內部錯誤
200 - 服務器成功返回網頁
3、運行
我在新浪微博中找了個URL縮短的地址作為輸入,執行后,果然找到了重定向地址。
控制臺輸出為:
http://t.cn/zjYwrl3
|
v
http://hero.pongo.cn/
4、驗證
用在線URL重定向檢測工具測試:
驗證OK。
總結
以上是生活随笔為你收集整理的java httpclient 重定向_用Apache HttpClient实现URL重定向的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: windows怎么把文件夹加密码锁
 - 下一篇: java 锁旗标_Java多线程