HttpClientUtils

import java.io.IOException;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.fasterxml.jackson.databind.ObjectMapper;

public class UPSHttpClient {

private static Logger logger = LoggerFactory.getLogger(UPSHttpClient.class);

private static final String ENCODING = "utf-8";
private static final String UPS_INTERFACE_KEY = "308ff629-864e-4686-8afb-da5e6ad665d5";

/**
* 发送 get请求
*/
public static String get(String url,String encoding,String headerKeyValue) {
encoding = null == encoding ? ENCODING : encoding;
String responseStr = null;

// 创建httpClient实例.
HttpClient httpclient = new HttpClient();

// 创建httpget.
GetMethod httpget = new GetMethod(url);
if(!StringUtils.isEmpty(headerKeyValue)){
String[] headerKeyValueArr = headerKeyValue.split(";");
for (String keyValue : headerKeyValueArr) {
String[] KeyValueArr = keyValue.split("=");
if("Content-Type".equals(KeyValueArr[0]))
httpget.setRequestHeader(KeyValueArr[0], KeyValueArr[1]+";charset="+encoding);
else
httpget.setRequestHeader(KeyValueArr[0], KeyValueArr[1]);
}
}
try {
logger.info("executing request :" + httpget.getURI());
// 执行get请求.
httpclient.executeMethod(httpget);
// 打印响应状态
logger.info("-------- :"+httpget.getStatusLine());
int responseCode = httpget.getStatusLine().getStatusCode();
// 获取响应实体
responseStr = IOUtils.toString(httpget.getResponseBodyAsStream(), "UTF-8");
// 打印响应内容长度
logger.info("UPS Response content length: " + responseStr.length());
// 打印响应内容
logger.info("UPS Response content: " +responseStr );

if(responseCode != 200 ) return null;

return responseStr;

} catch (HttpException e) {
logger.error("........httpget request error : " + e);
e.printStackTrace();
} catch (IOException ee) {
logger.error("........httpget request error : " + ee);
ee.printStackTrace();
} finally {
// 关闭连接,释放资源
httpget.releaseConnection();
}
return responseStr;
}

/**
* 发送 post请求
*/
public static String post(String url ,List<String> params,String encoding) {
String responseStr = null;
HttpClient httpclient = new HttpClient();
PostMethod httppost = new PostMethod(url.trim());
try {

Map<String ,Object> paramMap = new HashMap<String,Object>();
paramMap.put("key", UPS_INTERFACE_KEY);
paramMap.put("TrackingNumbers", params);
String jsonl = new ObjectMapper().writeValueAsString(paramMap);

RequestEntity se = new StringRequestEntity(jsonl, "application/json", encoding);
httppost.setRequestHeader("Content-Type", "application/json;charset="+encoding);

httppost.setRequestEntity(se);

Header[] header = httppost.getRequestHeaders();
for (Header head : header) System.out.println(head);
logger.info("executing post request :" + httppost.getURI());
// 执行post请求.
httpclient.executeMethod(httppost);
// 打印响应状态
logger.info("-------- :"+httppost.getStatusLine());
int responseCode = httppost.getStatusLine().getStatusCode();
// 获取响应实体
responseStr = IOUtils.toString(httppost.getResponseBodyAsStream(), "UTF-8");
// 打印响应内容长度
logger.info("UPS Response content length: " + responseStr.length());
// 打印响应内容
logger.info("UPS Response content: " +responseStr );

if(responseCode != 200 ) return null;

return responseStr;

} catch (HttpException e) {
logger.error("........httppost request error : " + e);
e.printStackTrace();
} catch (IOException ee) {
logger.error("........httppost request error : " + ee);
ee.printStackTrace();
} finally {
// 关闭连接,释放资源
httppost.releaseConnection();
}
return responseStr;
}
}

posted @ 2016-10-28 14:27  iHoon  阅读(838)  评论(0编辑  收藏  举报