1. 程式人生 > >HttpClient學習筆記一

HttpClient學習筆記一

對 HttpClient是第一次接觸,瞭解的不是太多。
但是感覺它的功能還是挺強大的:可以模擬一個瀏覽器去和一個伺服器互動。
我的需求是自動從一個網站上下載資料。這樣HttpClient解決了我的難題。
從網上看看搜尋結果,口碑還是不錯的。

HttpClient 是 Apache Jakarta Common 下的子專案,可以用來提供高效的、最新的、功能豐富的支援 HTTP 協議的客戶端程式設計工具包,並且它支援 HTTP 協議最新的版本和建議

先看看官方提供的tutorial

大概的使用步驟:
  1. Create an instance of HttpClient.
  2. Create an instance of one of the methods (GetMethod in this case). The URL to connect to is passed in to the the method constructor.
  3. Tell HttpClient to execute the method.
  4. Read the response.
  5. Release the connection.
  6. Deal with the response.
提供的一個小例子:

import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;
import org.apache.commons.httpclient.params.HttpMethodParams;

import java.io.*;

public class HttpClientTutorial {

private static String url = "http://www.apache.org/";

public static void main(String[] args) {
// Create an instance of HttpClient.
HttpClient client = new HttpClient();

// Create a method instance.
GetMethod method = new GetMethod(url);

// Provide custom retry handler is necessary
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(3, false));

try {
// Execute the method.
int statusCode = client.executeMethod(method);

if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: " + method.getStatusLine());
}

// Read the response body.
byte[] responseBody = method.getResponseBody();

// Deal with the response.
// Use caution: ensure correct character encoding and is not binary data
System.out.println(new String(responseBody));

} catch (HttpException e) {
System.err.println("Fatal protocol violation: " + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
System.err.println("Fatal transport error: " + e.getMessage());
e.printStackTrace();
} finally {
// Release the connection.
method.releaseConnection();
}
}


}

相關推薦

HttpClient學習筆記

對 HttpClient是第一次接觸,瞭解的不是太多。但是感覺它的功能還是挺強大的:可以模擬一個瀏覽器去和一個伺服器互動。我的需求是自動從一個網站上下載資料。這樣HttpClient解決了我的難題。從網上看看搜尋結果,口碑還是不錯的。HttpClient 是 Apache J

httpClient學習筆記

HTTP 協議概述 HTTP–Hyper Text Transfer Protocol,超文字傳輸協議,是一種建立在TCP上的無狀態連線,整個基本的工作流程是客戶端傳送一個HTTP請求,說明客戶端想要訪問的資源和請求的動作,服務端收到請求之後,服務端開始處理

AngularJS入門學習筆記

rect directive 技術分享 attr 兩個 ava 內容 module 大括號 首先聲明: 本博客源自於學習:跟我學AngularJs:AngularJs入門及第一個實例。通過學習,我自己的一些學習筆記。 1.AngularJS的一些基本特性 (1)使用雙大括號

Halcon學習筆記()

direct fusion 采集 das com nom pat 學習 filter 一、Halcon編程之圖像處理 1、讀取圖片 1、讀取單個圖片: 1.1 直接用算子read_image read_image (Image, ‘D:/3.tiff‘) 2

django學習筆記

site url ssa .com tin sessions .site add 註冊 2017年5月9日 ps 強烈推薦,django教程寫的很棒 http://code.ziqiangxuetang.com/django/django-tutorial.html 〇

Linux學習筆記()

版本 家目錄 動向 用戶 lin 絕對路徑 退出 鏈接庫 智能提示 1、Ubuntu 版本主版本年號+副版本月號,4月為穩定版,10月為測試版,單數為短期支持,雙數為長期支持。 2、shell為命令解析器,(shell--unix,bash--linux),大家也將bash

Tomcat學習筆記()

manage linux下 star bin servlet users 分析 clas oca Tomcat目錄結構的認識   tomcat是Apache旗下的一個開源Servlet的容器,實現了對Servlet和JSP技術支持。 通過http://tomcat

ELK學習筆記()---安裝ELK 5.x版

elk安裝ELK日誌平臺是一個完整的日誌分析系統,有三個開源工具構建組成,分別是:Elasticsearch、Logstash和Kibana。Elasticsearch用於數據分析和深度搜索;Logstash作用是從其他服務器上傳輸和轉發日誌,對其集中管理,進行分析;Kibana則是提供了強大的UI展示,將數

Git學習筆記()

編譯 缺點 watermark 索引 規範 存在 alt 回退 dsm 版本號控制系統簡單介紹 版本號控制系統是一種記錄若幹文件內容變化。以便將來查閱特定版本號修訂情況的系統。該系統不僅能夠度軟件源碼的文本文件進行版本號控制管理。也能夠對不論什麽其它類型的文件進行版本號

轉:C#制作ORM映射學習筆記 自定義Attribute類

技術 sage 其中 username pac ont 學習 collect reat 之前在做unity項目時發現只能用odbc連接數據庫,感覺非常的麻煩,因為之前做web開發的時候用慣了ORM映射,所以我想在unity中也用一下ORM(雖然我知道出於性能的考慮這樣做事不

ES6學習筆記()

message 提升 java syn log mes scrip 默認值 script 1.ES6學習之let、const (1).var、let、const 變(常)量聲明 ES5 只有全局作用域和函數作用域,沒有塊級作用域,這帶來很多不合理的場景。 在ES6中l

backbone學習筆記

router 內置 ear cti small 失敗 str 視圖view 避免 事件event on(bind) 在對象上綁定一個函數,只要該event被觸發,綁定函數即被調用。可以用第三個參數提供一個上下文 off(unbind) 移除對象上綁定的函數,可以傳遞上下文和

Microsoft.SQL.Server2012.Performance.Tuning.Cookbook學習筆記()

str perm phi prev pid brush -c rpc enabled 一、Creating a trace or workload 註意點: In the Trace Properties dialog box, there is a checkbox op

python學習筆記()

href ons xxx 自動下載 fail 響應 cdn pat pda   因為工作需要,經常需要到新浪某博客去找資料,在博文目錄裏一頁頁地肉眼搜索,看到合適的標題再點擊開鏈接查看內容,知道合適地再復制下來。很煩人。於是一直有個想法,學會爬蟲。   拿著單位發的購書卡去

QuartZ .Net 學習筆記: 源碼下載與查看

net href cnblogs 方法 category solution ges 博客 存在 最近因為工作需要研究一下QuartZ .net , 之前也用過不過但沒有深入了解, 現想深入研究一下 網上相關QuartZ .net 的文章不少, 但大部分都是源於張善友的博

Redis 學習筆記

支持 模式 包括 sun 有序 網頁 hyper 原子 類型 Redis特點:   1、速度快   2、支持豐富的數據類型:字符串、哈希列表、集合   3、操作具有原子性,所有Redis操作都是原子操作   4、多實用工具,可應用如緩存,消息隊列,應用程序中任何短期數據,如

React學習筆記

pre class cnblogs har set head 源碼 span dom 一:安裝react 1:直接下載react源碼包,把需要用到的js文件引入自己的頁面即可。 2:BootCDN 的 React CDN 庫: 在頁面代碼中導入即可: <head&

【canvas學習筆記】基本認識

基本認識 設置 supported eight -c 失真 ont 之前 上下 <canvas>標簽定義了一塊畫布,畫布可以在網頁中繪制2D和3D圖象,現在先學習如何繪制2D圖象,繪制3D圖象屬於WebGL的內容(也就是網頁版的OpenGL,3D圖形接口)。 屬

bpm 學習筆記

alt 分享 images dev oca one .com .cn devel 名詞解釋: DC: Development Component WD:Web Dynpro Keep DC Local for Now bpm 學習筆記一

webpack學習筆記

官方 utf-8 call reat modules public 總結 asc pack webpack、gulp、grunt是前端打包功能工具;因為已經學習了gulp,而最近發現webpack很火,於是著手學習webpack。本篇是webpack學習筆記系列的第一篇,歡