因為項目的原因,使用到了HttpClient這個Apache又一個好用的包,這里就簡單的介紹下它的使用吧。
使用場景:
因為項目中有一功能是需要和另一個系統(tǒng)進行數(shù)據(jù)交換的,一開始就考慮采用HttpUrlConnection連接遠程地址,發(fā)送流實現(xiàn)數(shù)據(jù)交換。后來發(fā)現(xiàn)了HttpClient,也就賴的再寫一些連接的函數(shù)了,所以就“拿來主義”了!
安裝:
HttpClient的使用需要三個包,分別是commons-httpclient-3.1.jar、commons-logging-1.0.4.jar、commons-codec-1.3.jar,都可以在Apache的官網(wǎng)上下載。
使用:
我們知道,HTTP協(xié)議的連接方法有GET、POST、PUT和HEAD方式,在創(chuàng)建Method實例的時候可以更具具體的方法來創(chuàng)建。HttpClient的使用一般分如下幾步:
1、創(chuàng)建HttpClient實例。
2、創(chuàng)建具體連接方法的實例。如POST方法創(chuàng)建PostMethod的實例,在實例化時從構造函數(shù)中傳入待連接的URL地址。
3、對post的發(fā)送內容等信息進行配置
4、執(zhí)行HttpClient的execute方法
5、如果返回的狀態(tài)碼正常,表明連接成功,可以讀取response的內容
1
//將創(chuàng)建的xml生成String類型等待發(fā)送
2
String strxml = CreateXML.creteCustomerXml(list);
3
//創(chuàng)建post發(fā)法的實例
4
PostMethod post = new PostMethod(
5
"http://127.0.0.1:8088/CustomerReceive");
6
// 使用系統(tǒng)提供的默認的恢復策略
7
post.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
8
new DefaultHttpMethodRetryHandler());
9
//設置發(fā)送的內容
10
post.setRequestBody(strxml);
11
//對發(fā)送的內容長度進行設定
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
//創(chuàng)建HttpClient 實例
22
HttpClient httpclient = new HttpClient();
23
int result;
24
try
{
25
//執(zhí)行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

]]>