package com.timespark.util;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import java.io.IOException;
import java.net.URL;
public class HTTPUtils {
private final static Logger logger = Logger.getLogger(HTTPUtils.class);
private final static String OPERATER_NAME = "【HTTP操作】";
private final static int SUCCESS = 200;
private final static String UTF8 = "UTF-8";
private HttpClient client;
private static HTTPUtils instance = new HTTPUtils();
/**
* 私有化构造器
*/
private HTTPUtils() {
HttpConnectionManager httpConnectionManager = new MultiThreadedHttpConnectionManager();
HttpConnectionManagerParams params = httpConnectionManager.getParams();
params.setConnectionTimeout(15000);
params.setSoTimeout(25000);
params.setDefaultMaxConnectionsPerHost(1000);
params.setMaxTotalConnections(1000);
client = new HttpClient(httpConnectionManager);
client.getParams().setContentCharset(UTF8);
client.getParams().setHttpElementCharset(UTF8);
}
/**
* get请求
*/
public static String get(URL url) {
return instance.doGet(url,UTF8);
}
public static String get(URL url,String codeMa) {
return instance.doGet(url,codeMa);
}
private String doGet(URL url,String codeMa) {
long beginTime = System.currentTimeMillis();
String respStr = StringUtils.EMPTY;
try {
logger.debug(OPERATER_NAME + "开始get通信,目标host:" + url);
HttpMethod method = new GetMethod(url.toString());
// 中文转码
method.getParams().setContentCharset(codeMa);
try {
client.executeMethod(method);
} catch (HttpException e) {
logger.error(new StringBuffer("发送HTTP GET给\r\n").append(url).append("\r\nHTTP异常\r\n"), e);
} catch (IOException e) {
logger.error(new StringBuffer("发送HTTP GET给\r\n").append(url).append("\r\nIO异常\r\n"), e);
}
if (method.getStatusCode() == SUCCESS) {
respStr = method.getResponseBodyAsString();
}
// 释放连接
method.releaseConnection();
logger.debug(OPERATER_NAME + "通讯完成,返回码:" + method.getStatusCode());
logger.debug(OPERATER_NAME + "返回内容:" + method.getResponseBodyAsString());
logger.debug(OPERATER_NAME + "结束..返回结果:" + respStr);
} catch (Exception e) {
logger.info(OPERATER_NAME, e);
}
long endTime = System.currentTimeMillis();
logger.debug(OPERATER_NAME + "共计耗时:" + (endTime - beginTime) + "ms");
return respStr;
}
/**
* POST请求
*/
public static String post(URL url ) {
return instance.doPost(url);
}
private String doPost(URL url) {
long beginTime = System.currentTimeMillis();
String respStr = StringUtils.EMPTY;
try {
logger.info(OPERATER_NAME + "开始post通信,目标host:" + url.toString());
PostMethod post = new PostMethod(url.toString());
//RequestEntity requestEntity = new StringRequestEntity(content, "application/json;charse=UTF-8", UTF8);
//post.setRequestEntity(requestEntity);
// 设置格式
post.getParams().setContentCharset(UTF8);
client.executeMethod(post);
if (post.getStatusCode() == SUCCESS) {
respStr = post.getResponseBodyAsString();
}else{
System.out.println("error: " +post.getResponseBodyAsString());
}
logger.info(OPERATER_NAME + "通讯完成,返回码:" + post.getStatusCode());
logger.info(OPERATER_NAME + "返回内容:" + post.getResponseBodyAsString());
logger.info(OPERATER_NAME + "结束..返回结果:" + respStr);
post.releaseConnection();
} catch (Exception e) {
logger.error(OPERATER_NAME, e);
}
long endTime = System.currentTimeMillis();
logger.info(OPERATER_NAME + "共计耗时:" + (endTime - beginTime) + "ms");
return respStr;
}
}