<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    yxhxj2006

    常用鏈接

    統計

    最新評論

    HttpClient使用

    背景:因為想寫一個測試tomcat連接的程序,就試試自已去構造Http請求。找了一下發現Apache下有一個比較成熟的輪子HttpComponets.

     

    使用庫:Apache Http Client

    HttpClient是一個代碼級的Http客戶端工具,可以使用它模擬瀏覽器向Http服務器發送請求。

    其中HttpClient是HttpComponents項目其中的一部份,HttpComponents簡稱為hc.

    http://hc.apache.org/

    使用HttpClient還需要HttpCore.這里其中包括Http請求與Http響應的代碼封裝。

     

    現在導入兩個jar包:

    httpclient-4.0.jar

    httpcore-4.0.jar

    httpmime-4.0.jar

     

    開始一個請求代碼如下:

    Java代碼 復制代碼 收藏代碼
    1. HttpClient httpClient = new DefaultHttpClient();   
    2. //構造請求,如果想使用POST則new一個HttpPost   
    3.         HttpGet get = new HttpGet("http://www.iteye.com");   
    4.         HttpResponse response = httpClient.execute(get);   
    5. //先從響應頭得到實體   
    6.         HttpEntity entity = response.getEntity();      
    7. //得到實體輸入流   
    8.         InputStream inSm = entity.getContent();   
    9.         Scanner inScn = new Scanner(inSm);   
    10.         while(inScn.hasNextLine()){   
    11.             System.out.println(inScn.nextLine());   
    12.         }   
    13.         entity.consumeContent();  
    HttpClient httpClient = new DefaultHttpClient(); //構造請求,如果想使用POST則new一個HttpPost 		HttpGet get = new HttpGet("http://www.iteye.com"); 		HttpResponse response = httpClient.execute(get); //先從響應頭得到實體 		HttpEntity entity = response.getEntity();	 //得到實體輸入流 		InputStream inSm = entity.getContent(); 		Scanner inScn = new Scanner(inSm); 		while(inScn.hasNextLine()){ 			System.out.println(inScn.nextLine()); 		} 		entity.consumeContent();

     

    這個是在HC例子中有代碼作了少量的修改。

    輸出:

    Java代碼 復制代碼 收藏代碼
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
    2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" dir="ltr">   
    3.   <head>   
    4.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>   
    5.     <title>JavaEye Java編程 Spring框架 AJAX技術 Agile敏捷軟件開發 ruby on rails實踐 - JavaEye做最棒的軟件開發交流社區</title>   
    6.     <meta name="description" content="Java編程,Spring Struts Webwork框架深入,XMLHTTP AJAX開發,Java Web開發,Java企業應用,Java設計模式,Java開源框架,Java應用服務器,Rich Client討論,Ruby編程,Ruby DSL開發,Ruby on rails實踐,JavaScript編程,敏捷軟件開發XP TDD,軟件配置管理,軟件測試,項目管理UML,數據庫,C#/.net C/C++ Erlang/FP PHP/Linux平臺,精通Hibernate" />   
    7.     <meta name="keywords"  content="Java編程 Spring框架 AJAX技術 Agile敏捷軟件開發 ruby on rails實踐 JavaEye深度技術社區" />   
    8.     <link rel="shortcut icon" href="/images/favicon.ico" type="image/x-icon" />   
    9.     <link href="/rss" rel="alternate" title="JavaEye技術網站RSS頻道訂閱" type="application/rss+xml" />   
    10.     <link  />   
    11.        
    12.   </head>   
    13.   
    14. ...省略,證明以上代碼已經成功  
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" dir="ltr">   <head>     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>     <title>JavaEye Java編程 Spring框架 AJAX技術 Agile敏捷軟件開發 ruby on rails實踐 - JavaEye做最棒的軟件開發交流社區</title>     <meta name="description" content="Java編程,Spring Struts Webwork框架深入,XMLHTTP AJAX開發,Java Web開發,Java企業應用,Java設計模式,Java開源框架,Java應用服務器,Rich Client討論,Ruby編程,Ruby DSL開發,Ruby on rails實踐,JavaScript編程,敏捷軟件開發XP TDD,軟件配置管理,軟件測試,項目管理UML,數據庫,C#/.net C/C++ Erlang/FP PHP/Linux平臺,精通Hibernate" />     <meta name="keywords"  content="Java編程 Spring框架 AJAX技術 Agile敏捷軟件開發 ruby on rails實踐 JavaEye深度技術社區" />     <link rel="shortcut icon" href="/images/favicon.ico" type="image/x-icon" />     <link href="/rss" rel="alternate" title="JavaEye技術網站RSS頻道訂閱" type="application/rss+xml" />     <link  media="screen" rel="stylesheet" type="text/css" />        </head>  ...省略,證明以上代碼已經成功

     當然這個只是大刀一小試。現在還離我的目標差一點點:

    需要做個頭,我還不太清楚有什么頭可以使用,那樣我又寫了個程序看看IE的頭到底是怎樣子的,

    沒有抓包程序,只好自已寫個程序:

     

    Java代碼 復制代碼 收藏代碼
    1. ServerSocket socketServer = new ServerSocket(10086);   
    2. Socket client = socketServer.accept();   
    3. InputStream inClient = client.getInputStream();   
    4. Scanner inScn = new Scanner(inClient);   
    5. while(inScn.hasNextLine()){   
    6.     System.out.println(inScn.nextLine());   
    7. }   
    8. inScn.close();   
    9. client.close();   
    10. socketServer.close();  
    		ServerSocket socketServer = new ServerSocket(10086); 		Socket client = socketServer.accept(); 		InputStream inClient = client.getInputStream(); 		Scanner inScn = new Scanner(inClient); 		while(inScn.hasNextLine()){ 			System.out.println(inScn.nextLine()); 		} 		inScn.close(); 		client.close(); 		socketServer.close();

     

    在IE地址欄上輸入:

    http://locahost:10086/

    點確定后可以得到程序輸出:

     

    Java代碼 復制代碼 收藏代碼
    1. GET / HTTP/1.1  
    2. Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*   
    3. Accept-Language: zh-CN   
    4. User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; QQWubi 87; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)   
    5. Accept-Encoding: gzip, deflate   
    6. Host: localhost:10086  
    7. Connection: Keep-Alive  
    GET / HTTP/1.1 Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */* Accept-Language: zh-CN User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; QQWubi 87; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0) Accept-Encoding: gzip, deflate Host: localhost:10086 Connection: Keep-Alive

     

    分析請求包中這六個頭信息。可以參考以下文章:

    http://zsxxsz.iteye.com/blog/568250

     

    現在我使用HC模擬IE的請求,修改后代碼如下:

    Java代碼 復制代碼 收藏代碼
    1. HttpClient httpClient = new DefaultHttpClient();   
    2.         HttpGet get = new HttpGet("http://www.iteye.com");   
    3.            
    4.         get.setHeader("Accept", "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*");   
    5.         get.setHeader("Accept-Language","zh-CN");   
    6.         get.setHeader("User-Agent","Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; QQWubi 87; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)");   
    7.         get.setHeader("Accept-Encoding","gzip, deflate");   
    8.         get.setHeader("Host","you never be know");   
    9.         get.setHeader("Connection","Keep-Alive");   
    10.            
    11.         HttpResponse response = httpClient.execute(get);  

    posted on 2012-11-08 02:45 奮斗成就男人 閱讀(628) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲乱码日产一区三区| 日韩免费无码一区二区视频| 亚洲综合伊人久久综合| 视频免费1区二区三区| 日韩高清免费在线观看| 亚洲AⅤ男人的天堂在线观看| 成年男女免费视频网站| 亚洲熟妇成人精品一区| 国产青草视频免费观看97| 精品国产日韩亚洲一区91| 免费一级特黄特色大片在线观看| 亚洲欧美精品午睡沙发| 国产免费人成在线视频| 一级女性全黄久久生活片免费| 精品亚洲成α人无码成α在线观看| 一级毛片**免费看试看20分钟 | 9久9久女女免费精品视频在线观看| 亚洲成综合人影院在院播放| 丁香花免费完整高清观看| 99久久国产亚洲综合精品| 日本不卡在线观看免费v| 男男gvh肉在线观看免费| 狠狠综合久久综合88亚洲| 蜜桃成人无码区免费视频网站| 亚洲综合区图片小说区| 在线观看免费人成视频色9| 国产精品亚洲精品久久精品 | 成人免费AA片在线观看| 亚洲国产精品成人AV在线 | 久久精品国产亚洲香蕉| 国产精品色拉拉免费看| 老司机午夜性生免费福利| 中文亚洲AV片在线观看不卡| 最好看的中文字幕2019免费| 色偷偷噜噜噜亚洲男人| 伊人久久大香线蕉亚洲| 国产h视频在线观看网站免费| 精品国产日韩亚洲一区在线| 亚洲高清视频在线观看| 成人免费视频一区二区三区| 成人免费无码H在线观看不卡|