日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java httpclient 重定向_用Apache HttpClient实现URL重定向

發布時間:2023/12/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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重定向的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。