複製程式碼如下:
包org.ssi.util;
導入java.io.IOException;
導入java.util.ArrayList;
導入java.util.List;
導入 net.sf.json.JSONArray;
導入 org.apache.commons.lang.exception.ExceptionUtils;
導入 org.apache.commons.logging.Log;
導入 org.apache.commons.logging.LogFactory;
導入 org.apache.http.HttpResponse;
導入 org.apache.http.HttpStatus;
導入 org.apache.http.NameValuePair;
導入 org.apache.http.client.HttpClient;
導入 org.apache.http.client.entity.UrlEncodedFormEntity;
導入 org.apache.http.client.methods.HttpPost;
導入 org.apache.http.impl.client.DefaultHttpClient;
導入 org.apache.http.message.BasicNameValuePair;
導入 org.apache.http.protocol.HTTP;
導入 org.apache.http.util.EntityUtils;
公共類別 APIHttpClient {
//介面位址
私有字串 apiURL = "";
私有日誌記錄器 = LogFactory.getLog(this.getClass());
私有靜態最終字串模式=“yyyy-MM-dd HH:mm:ss:SSS”;
私有 HttpClient httpClient = null;
私人 HttpPost 方法 = null;
私有長開始時間 = 0L;
私有長結束時間 = 0L;
私有 int 狀態 = 0;
/**
* 介面位址
* @參數網址
*/
公共APIHttpClient(字串網址){
如果(網址!=空)
{
this.apiURL = url;
}
if(apiURL!= null)
{
httpClient = 新的 DefaultHttpClient();
方法 = new HttpPost(apiURL);
}
}
/**
*呼叫API
* @param參數
* @返回
*/
公共字符串帖子(字符串參數)
{
字串主體=空;
logger.info("參數:" + 參數);
if(方法!= null & 參數!= null && !"".equals(parameters.trim()))
{
JSONArray jsonObject = JSONArray.fromObject(參數);
logger.info("json:" + jsonObject.toString());
嘗試{
List<NameValuePair> params=new ArrayList<NameValuePair>();
//建立一個NameValuePair倉庫,用於儲存需求傳輸的參數
params.add(new BasicNameValuePair("data",parameters));
//新增參數
method.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));
startTime = System.currentTimeMillis();
//設定編碼
HttpResponse 回應=httpClient.execute(方法);
endTime = System.currentTimeMillis();
int statusCode = response.getStatusLine().getStatusCode();
logger.info("狀態碼:" + statusCode);
logger.info("呼叫API消耗時間(單位:毫秒):" + (endTime - startTime));
if(statusCode!= HttpStatus.SC_OK){
logger.error("方法失敗:"+response.getStatusLine());
狀態=1;
}
//讀取響應體
body=EntityUtils.toString(response.getEntity());
}catch(IOException e){
//發生網路異常
logger.error("發生異常!/n"+ExceptionUtils.getFullStackTrace(e));
// 網路錯誤
狀態=3;
}
最後{
logger.info("呼叫介面狀態:" + status);
}
}
返回主體;
}
/**
* 0.成功 1.執行方法失敗 2.協定錯誤 3.網路錯誤
* @返回狀態
*/
公有 int getStatus() {
返回狀態;
}
/**
* @param status 要設定的狀態
*/
公共無效setStatus(int狀態){
this.status = 狀態;
}
/**
* @返回開始時間
*/
公共長 getStartTime() {
返回開始時間;
}
/**
* @返回結束時間
*/
公長 getEndTime() {
返回結束時間;
}
}