首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Apache Commons HttpClient 核心功能詳解:七大實戰武器

     編輯:Java 相關知識

武器一:拳頭——基礎 GET/POST

最基礎也最重要,如練武扎馬步。

HttpClient httpclient = new HttpClient(); // 創建客戶端,似打開瀏覽器
GetMethod getMethod = new GetMethod("https://www.blablabla.com"); // 創建 GET,似輸入網址
int statusCode = httpclient.executeMethod(getMethod); // 回車——出拳!
System.out.println("response=" + getMethod.getResponseBodyAsString()); // 察看命中情況,可獲取 Header、Cookies 等
getMethod.releaseConnection(); // 釋放連接,記得收拳

武器二:孔雀翎——支援 HTTPS

靜態區塊註冊 HTTPS 協議,暗藏玄機。

static {
    Protocol easyhttps = new Protocol("https", new EasySSLProtocolSocketFactory(), 443);
    Protocol.registerProtocol("https", easyhttps);
}

注意:官方二進制發布版無 SSL contrib 包,需下載源碼自行編譯或引入相關依賴。

武器三:多情環——Cookie 管理

記住狀態,如 Cookie 甜心無論走到哪裡都牽掛著你。

HttpClient httpclient = new HttpClient();
httpclient.getParams().setCookiePolicy(CookiePolicy.RFC_2109); // 常用協議
HttpState initialState = new HttpState();
Cookie cookie = new Cookie();
cookie.setDomain("www.balblabla.com");
cookie.setPath("/");
cookie.setName("多情環");
cookie.setValue("多情即無情");
initialState.addCookie(cookie);
httpclient.setState(initialState);
// ... 執行請求

武器四:離別鉤——解構 Cookie

多情環的反面,鉤出敵方零部件使其分離。

// 執行請求後
Cookie[] cookies = httpclient.getState().getCookies();
System.out.println("Present cookies: ");
for (int i = 0; i < cookies.length; i++) {
    System.out.println(" - " + cookies[i].toExternalForm());
    System.out.println(" - domain=" + cookies[i].getDomain());
    System.out.println(" - path=" + cookies[i].getPath());
    // ...
}

武器五:霸王槍——POST 參數提交

長兵器之王,靈蛇出洞般提交參數對。

PostMethod postMethod = new PostMethod("https://www.saybot.com/postme");
NameValuePair[] postData = new NameValuePair[2];
postData[0] = new NameValuePair("武器", "槍");
postData[1] = new NameValuePair("什麼槍", "神槍");
postMethod.addParameters(postData);
// ... 執行請求

武器六:七星碧玉刀——代理支援

局域網環境下的必備利器,無代理寸步難行。

HttpClient httpclient = new HttpClient();
httpclient.getHostConfiguration().setProxy("192.168.0.1", 9527);
httpclient.getParams().setAuthenticationPreemptive(true); // 關鍵:搶先認證,否則收到「無資格」
// 自定義 CredentialsProvider 實現
httpclient.getParams().setParameter(CredentialsProvider.PROVIDER, new MyProxyCredentialsProvider());
httpclient.getState().setProxyCredentials(
    new AuthScope("192.168.0.1", AuthScope.ANY_PORT, AuthScope.ANY_REALM),
    new UsernamePasswordCredentials("username", "password") // 代理用戶名密碼
);

武器七:(原文未列出第七項,此處補充常用進階)靈活的異常處理與連接管理

HttpClient 提供豐富的異常體系(HttpException、ConnectTimeoutException 等)與 HttpConnectionManager 支援連接池、超時控制、多線程安全複用,構建健壯 HTTP 客戶端的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved