<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 奮斗成就男人 閱讀(629) 評論(0)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 国产国产成年年人免费看片| 亚洲精品无码av天堂| 免费精品无码AV片在线观看| 国产黄在线观看免费观看不卡| yellow免费网站| 日韩精品内射视频免费观看| 亚洲精品免费网站| 国产免费牲交视频| 亚洲高清在线视频| 亚洲伊人久久大香线蕉啊| 黄色免费在线网址| 91老湿机福利免费体验| 好男人视频社区精品免费| 九月丁香婷婷亚洲综合色| 亚洲AV成人影视在线观看| 亚洲免费视频一区二区三区| 国产免费AV片在线播放唯爱网| 亚洲av高清在线观看一区二区 | 久久精品亚洲乱码伦伦中文| 亚洲AV成人无码久久精品老人| 亚洲国产成人综合精品| 一级毛片免费视频| 亚洲日韩国产一区二区三区| 亚洲精品在线免费观看| 一区二区3区免费视频| 无限动漫网在线观看免费| 亚洲AV永久精品爱情岛论坛| 国产成人综合亚洲绿色| 无码人妻精品中文字幕免费东京热| 国产L精品国产亚洲区久久| 四虎亚洲精品高清在线观看| 88xx成人永久免费观看| 国产亚洲A∨片在线观看| 国产99精品一区二区三区免费| 日本xxwwxxww在线视频免费| 亚洲日本国产综合高清| 免费在线看v网址| 亚洲国产电影在线观看| 在线观看av永久免费| 亚洲福利视频一区二区三区| 无码乱肉视频免费大全合集 |