package com.wdm.utils; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HttpClientUtils { private static Logger LOGGER = LoggerFactory.getLogger(HttpClientUtils.class); private static int CONNECT_TIME_OUT = 1000; private static int READ_TIME_OUT = 1000; private static byte[] BUFFER = new byte[1024]; public static final String DEFAULT_CHARSET = "UTF-8"; public static String get(String url) { return get(url, null, DEFAULT_CHARSET); } public static String get(String url, String charset) { return get(url, null, charset); } public static String get(String url, Map<String, String> header, String charset) { return get(url, header, charset, CONNECT_TIME_OUT, READ_TIME_OUT); } public static String get(String url, Map<String, String> header, String charset, int connectTimeout, int readTimeout) { String result = ""; try { HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); connection.setUseCaches(false); connection.setConnectTimeout(connectTimeout); connection.setReadTimeout(readTimeout); if (header != null) { for (Map.Entry<String, String> entry : header.entrySet()) { connection.setRequestProperty(entry.getKey(), entry.getValue()); } } ByteArrayOutputStream out = new ByteArrayOutputStream(); int responseCode = connection.getResponseCode(); if (responseCode < HttpURLConnection.HTTP_BAD_REQUEST) { InputStream is = connection.getInputStream(); int readCount; while ((readCount = is.read(BUFFER)) > 0) { out.write(BUFFER, 0, readCount); } is.close(); } else { LOGGER.warn("{} http response code is {}", url, responseCode); } connection.disconnect(); result = out.toString(); } catch (IOException e) { LOGGER.error("{}", e.getMessage(), e); } return result; } public static String post(String url, Map<String, String> params) { return post(url, params, DEFAULT_CHARSET); } public static String post(String url, Map<String, String> params, String charset) { return post(url, params, null, charset); } public static String post(String url, Map<String, String> params, Map<String, String> header, String charset) { return post(url, params, header, charset, CONNECT_TIME_OUT, READ_TIME_OUT); } public static String post(String url, Map<String, String> params, Map<String, String> header, String charset, int connectTimeout, int readTimeout) { String result = ""; try { HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); connection.setRequestMethod("POST"); connection.setDoOutput(true); connection.setUseCaches(false); connection.setConnectTimeout(connectTimeout); connection.setReadTimeout(readTimeout); if (header != null) { for (Map.Entry<String, String> entry : header.entrySet()) { connection.setRequestProperty(entry.getKey(), entry.getValue()); } } StringBuilder builder = new StringBuilder(); if (params != null) { for (Map.Entry<String, String> entry : params.entrySet()) { builder.append(entry.getKey()); builder.append("="); builder.append(entry.getValue()); builder.append("&"); } } OutputStream out = connection.getOutputStream(); out.write(builder.toString().getBytes(charset)); out.flush(); ByteArrayOutputStream bout = new ByteArrayOutputStream(); if (connection.getResponseCode() < HttpURLConnection.HTTP_BAD_REQUEST) { InputStream is = connection.getInputStream(); int readCount; while ((readCount = is.read(BUFFER)) > 0) { bout.write(BUFFER, 0, readCount); } is.close(); } connection.disconnect(); result = bout.toString(); } catch (IOException e) { LOGGER.error("{}", e.getMessage(), e); } return result; } }