因為項目的原因,使用到了HttpClient這個Apache又一個好用的包,這里就簡單的介紹下它的使用吧。
使用場景:
因為項目中有一功能是需要和另一個系統進行數據交換的,一開始就考慮采用HttpUrlConnection連接遠程地址,發送流實現數據交換。后來發現了HttpClient,也就賴的再寫一些連接的函數了,所以就“拿來主義”了!
安裝:
HttpClient的使用需要三個包,分別是commons-httpclient-3.1.jar、commons-logging-1.0.4.jar、commons-codec-1.3.jar,都可以在Apache的官網上下載。
使用:
我們知道,HTTP協議的連接方法有GET、POST、PUT和HEAD方式,在創建Method實例的時候可以更具具體的方法來創建。HttpClient的使用一般分如下幾步:
1、創建HttpClient實例。
2、創建具體連接方法的實例。如POST方法創建PostMethod的實例,在實例化時從構造函數中傳入待連接的URL地址。
3、對post的發送內容等信息進行配置
4、執行HttpClient的execute方法
5、如果返回的狀態碼正常,表明連接成功,可以讀取response的內容
1
//將創建的xml生成String類型等待發送
2
String strxml = CreateXML.creteCustomerXml(list);
3
//創建post發法的實例
4
PostMethod post = new PostMethod(
5
"http://127.0.0.1:8088/CustomerReceive");
6
// 使用系統提供的默認的恢復策略
7
post.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
8
new DefaultHttpMethodRetryHandler());
9
//設置發送的內容
10
post.setRequestBody(strxml);
11
//對發送的內容長度進行設定
12
if (strxml.length() < Integer.MAX_VALUE)
{
13
post.setRequestContentLength(strxml.length());
14
}
15
else
{
16
post
17
.setRequestContentLength(EntityEnclosingMethod.CONTENT_LENGTH_CHUNKED);
18
}
19
// 指定請求內容的類型
20
post.setRequestHeader("Content-type", "text/xml; charset=utf-8");
21
//創建HttpClient 實例
22
HttpClient httpclient = new HttpClient();
23
int result;
24
try
{
25
//執行post方法
26
result = httpclient.executeMethod(post);
27
//如果連接正常,獲得返回內容
28
if (result == HttpStatus.SC_OK)
{
29
InputStream input = post.getResponseBodyAsStream();
30
SAXReader readers = new SAXReader();
31
try
{
32
Document document = readers.read(input);
33
System.out.println(document.asXML());
34
} catch (DocumentException e)
{
35
// TODO Auto-generated catch block
36
e.printStackTrace();
37
}
38
}
39
} catch (HttpException e)
{
40
// TODO Auto-generated catch block
41
e.printStackTrace();
42
} catch (IOException e)
{
43
// TODO Auto-generated catch block
44
e.printStackTrace();
45
} finally
{
46
post.releaseConnection();
47
}
48
}
49

]]>