Java实现Http工具类的封装操作示例
本文实例讲述了Java实现Http工具类的封装操作。分享给大家供大家参考,具体如下:
http工具类的实现:(通过apache包)第一个类
importjava.io.IOException;
importorg.apache.http.HttpEntity;
importorg.apache.http.HttpResponse;
importorg.apache.http.HttpStatus;
importorg.apache.http.client.ClientProtocolException;
importorg.apache.http.client.HttpClient;
importorg.apache.http.client.methods.HttpGet;
importorg.apache.http.util.EntityUtils;
importcom.gooagoo.stcu.utils.http.HttpClientUtils;
publicclassHTTPRequest{
privateStringerrorMessage;//錯誤信息
/**
*HTTP請求字符串資源
*
*@paramurl
*URL地址
*@return字符串資源
**/
publicStringhttpRequestString(Stringurl){
Stringresult=null;
try{
HttpEntityhttpEntity=httpRequest(url);
if(httpEntity!=null){
result=EntityUtils.toString(httpEntity,"urf-8");//使用UTF-8編碼
}
}catch(IOExceptione){
errorMessage=e.getMessage();
}
returnresult;
}
/**
*HTTP請求字節數組資源
*
*@paramurl
*URL地址
*@return字節數組資源
**/
publicbyte[]httpRequestByteArray(Stringurl){
byte[]result=null;
try{
HttpEntityhttpEntity=httpRequest(url);
if(httpEntity!=null){
result=EntityUtils.toByteArray(httpEntity);
}
}catch(IOExceptione){
errorMessage=e.getMessage();
}
returnresult;
}
/**
*使用HTTPGET方式請求
*
*@paramurl
*URL地址
*@returnHttpEntiry對象
**/
privateHttpEntityhttpRequest(Stringurl){
HttpEntityresult=null;
try{
HttpGethttpGet=newHttpGet(url);
HttpClienthttpClient=HttpClientUtils.getHttpClient();
HttpResponsehttpResponse;
httpResponse=httpClient.execute(httpGet);
inthttpStatusCode=httpResponse.getStatusLine().getStatusCode();
/*
*判斷HTTP狀態碼是否為200
*/
if(httpStatusCode==HttpStatus.SC_OK){
result=httpResponse.getEntity();
}else{
errorMessage="HTTP:"+httpStatusCode;
}
}catch(ClientProtocolExceptione){
errorMessage=e.getMessage();
}catch(IOExceptione){
errorMessage=e.getMessage();
}
returnresult;
}
/**
*返回錯誤消息
*
*@return錯誤信息
**/
publicStringgetErrorMessage(){
returnthis.errorMessage;
}
}
第二个类的实现:
packagecom.demo.http;
importjava.net.UnknownHostException;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.Iterator;
importjava.util.List;
importjava.util.Map;
importjava.util.Map.Entry;
importorg.apache.http.HttpResponse;
importorg.apache.http.HttpStatus;
importorg.apache.http.NameValuePair;
importorg.apache.http.client.HttpClient;
importorg.apache.http.client.entity.UrlEncodedFormEntity;
importorg.apache.http.client.methods.HttpPost;
importorg.apache.http.impl.client.DefaultHttpClient;
importorg.apache.http.message.BasicNameValuePair;
importorg.apache.http.params.BasicHttpParams;
importorg.apache.http.params.HttpConnectionParams;
importorg.apache.http.protocol.HTTP;
importorg.apache.http.util.EntityUtils;
publicclassHttpClientUtils{
privatestaticfinalintREQUEST_TIMEOUT=5*1000;//设置请求超时10秒钟
privatestaticfinalintSO_TIMEOUT=10*1000;//设置等待数据超时时间10秒钟
//staticParseXmlparseXML=newParseXml();
//初始化HttpClient,并设置超时
publicstaticHttpClientgetHttpClient(){
BasicHttpParamshttpParams=newBasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams,REQUEST_TIMEOUT);
HttpConnectionParams.setSoTimeout(httpParams,SO_TIMEOUT);
HttpClientclient=newDefaultHttpClient(httpParams);
returnclient;
}
publicstaticbooleandoPost(Stringurl)throwsException{
HttpClientclient=getHttpClient();
HttpPosthttppost=newHttpPost(url);
HttpResponseresponse;
response=client.execute(httppost);
if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){
returntrue;
}
client.getConnectionManager().shutdown();
returnfalse;
}
/**
*与远程交互的返回值post方式
*
*@paramhashMap
*@paramurl
*@return
*/
publicstaticStringgetHttpXml(HashMaphashMap,Stringurl){
StringresponseMsg="";
HttpPostrequest=newHttpPost(url);
Listparams=newArrayList();
Iterator>iter=hashMap.entrySet()
.iterator();
while(iter.hasNext()){
Entryentry=iter.next();
params.add(newBasicNameValuePair(entry.getKey(),entry.getValue()));
}
try{
request.setEntity(newUrlEncodedFormEntity(params,HTTP.UTF_8));
HttpClientclient=HttpClientUtils.getHttpClient();
HttpResponseresponse=client.execute(request);
if(response.getStatusLine().getStatusCode()==200){
responseMsg=EntityUtils.toString(response.getEntity());
}
}catch(UnknownHostExceptione){
e.printStackTrace();
}catch(Exceptione){
e.printStackTrace();
}
returnresponseMsg;
}
/**
*map转字符串拼接参数
*
*@paramhashMap
*@return
*/
publicstaticStringmapToString(HashMaphashMap){
StringparameStr="";
Iterator>iter=hashMap.entrySet()
.iterator();
while(iter.hasNext()){
Entryentry=iter.next();
parameStr+="&"+entry.getKey()+"="+entry.getValue();
}
if(parameStr.contains("&")){
parameStr=parameStr.replaceFirst("&","?");
}
returnparameStr;
}
}
更多关于java相关内容感兴趣的读者可查看本站专题:《JavaSocket编程技巧总结》、《Java文件与目录操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。