复制代码代码如下:
包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() {
返回结束时间;
}
}