HttpClient工具类
public class HttpClientUtil {
private static Logger logger = LoggerFactory.getLogger(HttpClientUtil.class);
public static String doGet(String url, Map<String, String> param) { // 创建Httpclient对象 CloseableHttpClient httpclient = HttpClients.createDefault(); String resultString = ""; CloseableHttpResponse response = null; try { // 创建uri URIBuilder builder = new URIBuilder(url); if (param != null) { for (String key : param.keySet()) { builder.addParameter(key, param.get(key)); } } URI uri = builder.build(); logger.debug("whole url:" + uri); // 创建http GET请求 HttpGet httpGet = new HttpGet(uri); // 执行请求 response = httpclient.execute(httpGet); // 判断返回状态是否为200 if (response.getStatusLine().getStatusCode() == 200) { resultString = EntityUtils.toString(response.getEntity(), "UTF-8"); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (response != null) { response.close(); } httpclient.close(); } catch (IOException e) { e.printStackTrace(); } } return resultString; } public static String doGet(String url) { return doGet(url, null); } /** * doPostByJson * @param url * @param json * @return */ public static String doPostByJson(String url, String json, String chartSet) { String defalutChartSet = "UTF-8"; if (chartSet != null) { defalutChartSet = chartSet; } // 创建Httpclient对象 CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse response = null; String resultString = ""; try { // 创建Http Post请求 HttpPost httpPost = new HttpPost(url); // 创建请求内容 StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON); entity.setContentEncoding(defalutChartSet); httpPost.setEntity(entity); // 执行http请求 response = httpClient.execute(httpPost); resultString = EntityUtils.toString(response.getEntity(), defalutChartSet); } catch (Exception e) { e.printStackTrace(); } finally { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } return resultString; } /** * * @param url * @param param * @param chartSet * @return */ public static String doPost(String url, Map<String, String> param, String chartSet) { String defalutChartSet = "UTF-8"; if (chartSet != null) { defalutChartSet = chartSet; } // 创建Httpclient对象 CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse response = null; String resultString = ""; try { // 创建Http Post请求 HttpPost httpPost = new HttpPost(url); // 创建参数列表 if (param != null) { List<NameValuePair> paramList = new ArrayList<>(); for (String key : param.keySet()) { paramList.add(new BasicNameValuePair(key, param.get(key))); } // 模拟表单 UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList, defalutChartSet); httpPost.setEntity(entity); } // 执行http请求 response = httpClient.execute(httpPost); resultString = EntityUtils.toString(response.getEntity(), defalutChartSet); } catch (Exception e) { e.printStackTrace(); } finally { try { if (response != null) { response.close(); } } catch (IOException e) { e.printStackTrace(); } } return resultString; } public static String doPostByFile(String url, File file, String termSeq) { String resultString = ""; CloseableHttpClient httpClient = null; CloseableHttpResponse response = null; try { httpClient = HttpClients.createDefault(); // 把一个普通参数和文件上传给下面这个地址 是一个servlet HttpPost httpPost = new HttpPost(url); // 把文件转换成流对象FileBody FileBody bin = new FileBody(file); StringBody termSeqStr = new StringBody(termSeq, ContentType.create( "text/plain", Consts.UTF_8)); HttpEntity reqEntity = MultipartEntityBuilder.create() // 相当于<input type="file" name="file"/> .addPart("file", bin) // 相当于<input type="text" name="userName" value=userName> .addPart("termSeq", termSeqStr)
// .addPart("pass", password)
.build();
httpPost.setEntity(reqEntity); // 发起请求 并返回请求的响应 response = httpClient.execute(httpPost); logger.info("The response value of token:" + response.getFirstHeader("token")); System.out.println("The response value of token:" + response.getFirstHeader("token")); // 获取响应对象 HttpEntity resEntity = response.getEntity(); if (resEntity != null) { // 打印响应长度 logger.info("Response content length: " + resEntity.getContentLength()); System.out.println("Response content length: " + resEntity.getContentLength()); // 打印响应内容 resultString = EntityUtils.toString(resEntity, Charset.forName("UTF-8")); } // 销毁 EntityUtils.consume(resEntity); return resultString; } catch (Exception e) { e.printStackTrace(); } finally { try { if (response != null) { response.close(); } } catch (IOException e) { e.printStackTrace(); } try { if (httpClient != null) { httpClient.close(); } } catch (IOException e) { e.printStackTrace(); } } return resultString; } /** * * @param url * @param param * @return */ public static String doPost(String url, Map<String, String> param) { return doPost(url, param, null); } /** * * @param url * @return */ public static String doPost(String url) { return doPost(url, null); }
}