程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Apache Common HttpClient使用之七種武器

Apache Common HttpClient使用之七種武器

編輯:關於JAVA

1.拳頭之Get/Post

拳頭是最基本的一重武器,也是最重要的,好比練武之人必須先扎穩馬步。

java 代碼

HttpClient httpclient=new HttpClient();//創建一個客戶端,類似打開一個浏覽器

GetMethod getMethod=new GetMethod("http://www.blablabla.com");//創建一個get方法,類似在浏覽器地址欄中輸入一個地址

int statusCode=httpclient.executeMethod(getMethod);//回車——出拳! 

System.out.println("response=" + getMethod.getResponseBodyAsString());//察看拳頭命中情況,可以獲得的東西還有很多,比如head, cookies等等 

getMethod.releaseConnection();//釋放,記得收拳哦

2.孔雀翎之支持https

如何支持https?

java 代碼

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

在執行具體的http method之前,暗中將https協議注冊一把,如孔雀翎暗藏玄機,斃敵於無形。記住,官方的binary發行版本沒有ssl的contribute包,方法一是下載源代碼版本來打造你的孔雀翎。

3.多情環之cookies

常道人老多情,其實是記憶太多,所以情之所至,正如cookies甜心,無論你走到那,總把你牽掛:

java 代碼

HttpClient httpclient=new HttpClient();
httpclient.getParams().setCookiePolicy(CookiePolicy.RFC_2109);//RFC_2109是支持較普遍的一個,還有其他cookie協議
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);
...

4.離別鉤之解構cookies

多情環的反面即離別鉤,鉤出,敵之身體某個部件即要與身體別離,端的是無情:

java 代碼

...//執行了某些get/post方法後
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());
  ...
}

5.霸王搶之post參數

槍,長兵器之王,諸多名將均使一桿或金或銀命名的名槍,比如岳飛。post方法在提交參數對時,猶如靈蛇出洞:

java 代碼

PostMethod postMethod = new PostMethod("http://www.saybot.com/postme");
NameValuePair[] postData = new NameValuePair[2];
postData[0] = new NameValuePair("武器", "槍");
postData[1] = new NameValuePair("什麼槍", "神槍");
postMethod.addParameters(postData);
...//出槍吧

6.七星碧玉刀之支持代理(proxy)

代理,非常重要,尤其在局域網橫行的年頭,沒有代理,你在公司上不了QQ,沒有代理,google不了網頁快照,代理之威,可比七星碧玉刀,無刀,在局域網和開發當中,一切白搭:

java 代碼

HttpClient httpclient=new HttpClient();
httpClient.getHostConfiguration().setProxy("192.168.0.1", 9527);
httpClient.getParams().setAuthenticationPreemptive(true);//重要!!!告訴httpclient,使用搶先認證,否則你會收到“你沒有資格”的惡果 
/*
 這一步也至關重要,MyProxyCredentialsProvider實現了org.apache.commons.httpclient.auth.CredentialsProvider接口,
 返回代理的credential(username/password)*/
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",//proxy的用戶名
            "password"));//proxy的密碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved