package aiyh.utils.httpUtil.util; import com.alibaba.fastjson.JSON; import com.google.common.base.Strings; import com.google.common.util.concurrent.ThreadFactoryBuilder; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.*; import org.apache.http.entity.ContentType; import org.apache.http.entity.StringEntity; import org.apache.http.entity.mime.HttpMultipartMode; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.entity.mime.content.StringBody; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import aiyh.utils.httpUtil.ExtendedIOUtils; import aiyh.utils.httpUtil.HttpArgsType; import aiyh.utils.httpUtil.HttpManager; import aiyh.utils.httpUtil.ResponeVo; import aiyh.utils.httpUtil.httpAsync.HttpAsyncThread; import aiyh.utils.httpUtil.httpAsync.HttpAsyncThreadCallBack; import aiyh.utils.zwl.common.ToolUtil; import weaver.file.ImageFileManager; import java.io.*; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.*; import java.util.function.Consumer; /** * @author EBU7-dev1-ayh * @date 2021/8/31 0031 17:16 * http请求工具 与HttpStaticUtils使用相同,说明请查看HttpStaticUtils */ public class HttpUtils { // 默认编码 private String DEFAULT_ENCODING = "UTF-8"; private final ToolUtil toolUtil = new ToolUtil(); private final GlobalCache globalCache = new GlobalCache(); // 线程池 private final ThreadPoolExecutor executorService; { // private final ExecutorService executorService = Executors.newFixedThreadPool(3); ThreadFactoryBuilder threadFactoryBuilder = new ThreadFactoryBuilder(); ThreadFactory threadFactory = threadFactoryBuilder.setNameFormat("xxx-pool-%d").build(); executorService = new ThreadPoolExecutor(5, 200, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(1024), threadFactory, new ThreadPoolExecutor.AbortPolicy()); } public HttpUtils() { } public GlobalCache getGlobalCache() { return globalCache; } public void setDEFAULT_ENCODING() { this.DEFAULT_ENCODING = DEFAULT_ENCODING; } public HttpUtils(String DEFAULT_ENCODING) { this.DEFAULT_ENCODING = DEFAULT_ENCODING; } public HttpPost getHttpPost(String url) { HttpPost httpPost = new HttpPost(url); RequestConfig requestConfig = RequestConfig.custom() .setConnectTimeout(10000) .setConnectionRequestTimeout(10000) .setRedirectsEnabled(true) .build(); httpPost.setConfig(requestConfig); return httpPost; } public HttpGet getHttpGet(String url) { HttpGet httpGet = new HttpGet(url); RequestConfig requestConfig = RequestConfig.custom() .setConnectTimeout(10000) .setConnectionRequestTimeout(10000) .setRedirectsEnabled(true) .build(); httpGet.setConfig(requestConfig); return httpGet; } /** * get请求 * * @param url 请求地址 * @return 请求结果 * @throws IOException io异常 */ public ResponeVo apiGet(String url) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map params = paramsHandle(null); String getUrl = urlHandle(url, params); Map headers = headersHandle(null); HttpGet httpGet = new HttpGet(getUrl.trim()); for (Map.Entry entry : headers.entrySet()) { httpGet.setHeader(entry.getKey(), entry.getValue()); } return baseRequest(httpConnection, httpGet); } /** * delete请求 * * @param url 请求地址 * @return 请求结果 * @throws IOException io异常 */ public ResponeVo apiDelete(String url) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map params = paramsHandle(null); String getUrl = urlHandle(url, params); Map headers = headersHandle(null); HttpDelete httpDelete = new HttpDelete(getUrl.trim()); for (Map.Entry entry : headers.entrySet()) { httpDelete.setHeader(entry.getKey(), entry.getValue()); } return baseRequest(httpConnection, httpDelete); } /** * get请求 * * @param url 请求地址 * @param headers 请求头 * @return 请求结果 * @throws IOException io异常 */ public ResponeVo apiGet(String url, Map headers) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map params = paramsHandle(null); String getUrl = urlHandle(url, params); Map headerMap = headersHandle(headers); HttpGet httpGet = new HttpGet(getUrl.trim()); for (Map.Entry entry : headerMap.entrySet()) { httpGet.setHeader(entry.getKey(), entry.getValue()); } return baseRequest(httpConnection, httpGet); } public ResponeVo apiDelete(String url, Map headers) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map params = paramsHandle(null); String getUrl = urlHandle(url, params); Map headerMap = headersHandle(headers); HttpDelete httpDelete = new HttpDelete(getUrl.trim()); for (Map.Entry entry : headerMap.entrySet()) { httpDelete.setHeader(entry.getKey(), entry.getValue()); } return baseRequest(httpConnection, httpDelete); } public ResponeVo apiGet(String url, Map params, Map headers) throws IOException { Map paramsMap = paramsHandle(params); String getUrl = urlHandle(url, paramsMap); Map headerMap = headersHandle(headers); CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); HttpGet httpGet = new HttpGet(getUrl.trim()); for (Map.Entry entry : headerMap.entrySet()) { httpGet.setHeader(entry.getKey(), entry.getValue()); } return baseRequest(httpConnection, httpGet); } public ResponeVo apiDelete(String url, Map params, Map headers) throws IOException { Map paramsMap = paramsHandle(params); String getUrl = urlHandle(url, paramsMap); Map headerMap = headersHandle(headers); CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); HttpDelete httpDelete = new HttpDelete(getUrl.trim()); for (Map.Entry entry : headerMap.entrySet()) { httpDelete.setHeader(entry.getKey(), entry.getValue()); } return baseRequest(httpConnection, httpDelete); } /** * 回调方法 * * @param url 请求地址 * @param params 请求参数 * @param headers 请求头信息 * @param consumer 回调方法 * @throws IOException io异常 */ public void apiGet(String url, Map params, Map headers, Consumer consumer) throws IOException { Map paramsMap = paramsHandle(params); String getUrl = urlHandle(url, paramsMap); Map headerMap = headersHandle(headers); CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); HttpGet httpGet = new HttpGet(getUrl.trim()); for (Map.Entry entry : headerMap.entrySet()) { httpGet.setHeader(entry.getKey(), entry.getValue()); } callBackRequest(httpConnection, httpGet, consumer); } /** * 回调方法 * * @param url 请求地址 * @param params 请求参数 * @param headers 请求头信息 * @param consumer 回调方法 * @throws IOException io异常 */ public void apiDelete(String url, Map params, Map headers, Consumer consumer) throws IOException { Map paramsMap = paramsHandle(params); String getUrl = urlHandle(url, paramsMap); Map headerMap = headersHandle(headers); CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); HttpDelete httpDelete = new HttpDelete(getUrl.trim()); for (Map.Entry entry : headerMap.entrySet()) { httpDelete.setHeader(entry.getKey(), entry.getValue()); } callBackRequest(httpConnection, httpDelete, consumer); } public ResponeVo apiPost(String url, Map params) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map paramsMap = paramsHandle(params); Map headerMap = headersHandle(null); HttpPost httpPost = handleHttpPost(url, headerMap, paramsMap); return baseRequest(httpConnection, httpPost); } public ResponeVo apiPut(String url, Map params) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map paramsMap = paramsHandle(params); Map headerMap = headersHandle(null); HttpPut httpPut = handleHttpPut(url, headerMap, paramsMap); return baseRequest(httpConnection, httpPut); } public ResponeVo apiPost(String url, Map params, Map headers) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map paramsMap = paramsHandle(params); Map headerMap = headersHandle(headers); HttpPost httpPost = handleHttpPost(url, headerMap, paramsMap); return baseRequest(httpConnection, httpPost); } public ResponeVo apiPut(String url, Map params, Map headers) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map paramsMap = paramsHandle(params); Map headerMap = headersHandle(headers); HttpPut httpPut = handleHttpPut(url, headerMap, paramsMap); return baseRequest(httpConnection, httpPut); } public ResponeVo apiUploadFile(String url,InputStream inputStream, String fileKey,String fileName, Map params, Map headers) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map paramsMap = paramsHandle(params); Map headerMap = headersHandle(headers); HttpPost httpPost = uploadFileByInputStream(url,inputStream, fileKey,fileName, paramsMap, headerMap); return baseRequest(httpConnection, httpPost); } public ResponeVo apiUploadFile(String url,File file, String fileKey,String fileName, Map params, Map headers) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map paramsMap = paramsHandle(params); Map headerMap = headersHandle(headers); HttpPost httpPost = uploadFileByInputStream(url,file, fileKey,fileName, paramsMap, headerMap); return baseRequest(httpConnection, httpPost); } public ResponeVo apiUploadFileById(String url,int id, String fileKey,String fileName, Map params, Map headers) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map paramsMap = paramsHandle(params); Map headerMap = headersHandle(headers); InputStream inputStream = ImageFileManager.getInputStreamById(id); HttpPost httpPost = uploadFileByInputStream(url,inputStream, fileKey,fileName, paramsMap, headerMap); return baseRequest(httpConnection, httpPost); } /** * @param url 请求地址 * @param params 请求参数 * @param headers 请求头信息 * @param consumer 回调方法 * @throws IOException io异常 */ public void apiPost(String url, Map params, Map headers, Consumer consumer) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map paramsMap = paramsHandle(params); Map headerMap = headersHandle(headers); HttpPost httpPost = handleHttpPost(url, headerMap, paramsMap); callBackRequest(httpConnection, httpPost, consumer); } /** * @param url 请求地址 * @param params 请求参数 * @param headers 请求头信息 * @param consumer 回调方法 * @throws IOException io异常 */ public void apiPut(String url, Map params, Map headers, Consumer consumer) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map paramsMap = paramsHandle(params); Map headerMap = headersHandle(headers); HttpPut httpPut = handleHttpPut(url, headerMap, paramsMap); callBackRequest(httpConnection, httpPut, consumer); } private void callBackRequest(CloseableHttpClient httpClient, HttpUriRequest request, Consumer consumer) throws IOException { CloseableHttpResponse response = null; try { response = httpClient.execute(request); consumer.accept(response); } catch (Exception e) { toolUtil.writeErrorLog(" http调用失败:" + e); throw e; } // new CloseThread(httpClient,response).run(); ExtendedIOUtils.closeQuietly(httpClient); ExtendedIOUtils.closeQuietly(response); } public ResponeVo baseRequest(CloseableHttpClient httpClient, HttpUriRequest request) throws IOException { ResponeVo responeVo = new ResponeVo(); CloseableHttpResponse response = null; try { response = httpClient.execute(request); HttpEntity entity = response.getEntity(); Header[] allHeaders = response.getAllHeaders(); Locale locale = response.getLocale(); responeVo.setLocale(locale); responeVo.setAllHeaders(allHeaders); responeVo.setEntityString(EntityUtils.toString(entity, DEFAULT_ENCODING)); responeVo.setCode(response.getStatusLine().getStatusCode()); } catch (Exception e) { toolUtil.writeErrorLog(" http调用失败:" + e); throw e; } // new CloseThread(httpClient,response).run(); ExtendedIOUtils.closeQuietly(httpClient); ExtendedIOUtils.closeQuietly(response); return responeVo; } /** * get请求 * * @param url 请求地址 * @return 请求结果 * @throws IOException io异常 */ public Future asyncApiGet(String url) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map params = paramsHandle(null); String getUrl = urlHandle(url, params); Map headers = headersHandle(null); HttpGet httpGet = new HttpGet(getUrl.trim()); for (Map.Entry entry : headers.entrySet()) { httpGet.setHeader(entry.getKey(), entry.getValue()); } return executorService.submit(new HttpAsyncThread(httpConnection, httpGet, DEFAULT_ENCODING)); } /** * delete请求 * * @param url 请求地址 * @return 异步请求结果 * @throws IOException io异常 */ public Future asyncApiDelete(String url) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map params = paramsHandle(null); String getUrl = urlHandle(url, params); Map headers = headersHandle(null); HttpDelete httpDelete = new HttpDelete(getUrl.trim()); for (Map.Entry entry : headers.entrySet()) { httpDelete.setHeader(entry.getKey(), entry.getValue()); } return executorService.submit(new HttpAsyncThread(httpConnection, httpDelete, DEFAULT_ENCODING)); } /** * get请求 * * @param url 请求地址 * @param headers 请求头 * @return 异步请求结果 * @throws IOException io异常 */ public Future asyncApiGet(String url, Map headers) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map params = paramsHandle(null); String getUrl = urlHandle(url, params); Map headerMap = headersHandle(headers); HttpGet httpGet = new HttpGet(getUrl.trim()); for (Map.Entry entry : headerMap.entrySet()) { httpGet.setHeader(entry.getKey(), entry.getValue()); } return executorService.submit(new HttpAsyncThread(httpConnection, httpGet, DEFAULT_ENCODING)); } public Future asyncApiDelete(String url, Map headers) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map params = paramsHandle(null); String getUrl = urlHandle(url, params); Map headerMap = headersHandle(headers); HttpDelete httpDelete = new HttpDelete(getUrl.trim()); for (Map.Entry entry : headerMap.entrySet()) { httpDelete.setHeader(entry.getKey(), entry.getValue()); } return executorService.submit(new HttpAsyncThread(httpConnection, httpDelete, DEFAULT_ENCODING)); } public Future asyncApiGet(String url, Map params, Map headers) throws IOException { Map paramsMap = paramsHandle(params); String getUrl = urlHandle(url, paramsMap); Map headerMap = headersHandle(headers); CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); HttpGet httpGet = new HttpGet(getUrl.trim()); for (Map.Entry entry : headerMap.entrySet()) { httpGet.setHeader(entry.getKey(), entry.getValue()); } return executorService.submit(new HttpAsyncThread(httpConnection, httpGet, DEFAULT_ENCODING)); } public Future asyncApiDelete(String url, Map params, Map headers) throws IOException { Map paramsMap = paramsHandle(params); String getUrl = urlHandle(url, paramsMap); Map headerMap = headersHandle(headers); CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); HttpDelete httpDelete = new HttpDelete(getUrl.trim()); for (Map.Entry entry : headerMap.entrySet()) { httpDelete.setHeader(entry.getKey(), entry.getValue()); } return executorService.submit(new HttpAsyncThread(httpConnection, httpDelete, DEFAULT_ENCODING)); } /** * 回调方法 * * @param url 请求地址 * @param params 请求参数 * @param headers 请求头信息 * @param consumer 回调函数 * @throws IOException io异常 */ public void asyncApiGet(String url, Map params, Map headers, Consumer consumer) throws IOException { Map paramsMap = paramsHandle(params); String getUrl = urlHandle(url, paramsMap); Map headerMap = headersHandle(headers); CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); HttpGet httpGet = new HttpGet(getUrl.trim()); for (Map.Entry entry : headerMap.entrySet()) { httpGet.setHeader(entry.getKey(), entry.getValue()); } executorService.execute(new HttpAsyncThreadCallBack(httpConnection, httpGet, consumer)); } /** * * @param url 请求地址 * @param params 请求参数 * @param headers 请求头信息 * @param consumer 回调方法 * @throws IOException io异常 */ public void asyncApiDelete(String url, Map params, Map headers, Consumer consumer) throws IOException { Map paramsMap = paramsHandle(params); String getUrl = urlHandle(url, paramsMap); Map headerMap = headersHandle(headers); CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); HttpDelete httpDelete = new HttpDelete(getUrl.trim()); for (Map.Entry entry : headerMap.entrySet()) { httpDelete.setHeader(entry.getKey(), entry.getValue()); } executorService.execute(new HttpAsyncThreadCallBack(httpConnection, httpDelete, consumer)); } public Future asyncApiPost(String url, Map params) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map paramsMap = paramsHandle(params); Map headerMap = headersHandle(null); HttpPost httpPost = handleHttpPost(url, headerMap, paramsMap); return executorService.submit(new HttpAsyncThread(httpConnection, httpPost, DEFAULT_ENCODING)); } public Future asyncApiPut(String url, Map params) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map paramsMap = paramsHandle(params); Map headerMap = headersHandle(null); HttpPut httpPut = handleHttpPut(url, headerMap, paramsMap); return executorService.submit(new HttpAsyncThread(httpConnection, httpPut, DEFAULT_ENCODING)); } public Future asyncApiPost(String url, Map params, Map headers) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map paramsMap = paramsHandle(params); Map headerMap = headersHandle(headers); HttpPost httpPost = handleHttpPost(url, headerMap, paramsMap); return executorService.submit(new HttpAsyncThread(httpConnection, httpPost, DEFAULT_ENCODING)); } public Future asyncApiPut(String url, Map params, Map headers) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map paramsMap = paramsHandle(params); Map headerMap = headersHandle(headers); HttpPut httpPut = handleHttpPut(url, headerMap, paramsMap); return executorService.submit(new HttpAsyncThread(httpConnection, httpPut, DEFAULT_ENCODING)); } /** * @param url 请求地址 * @param params 请求参数 * @param headers 请求头信息 * @param consumer 回调方法 * @throws IOException io异常 */ public void asyncApiPost(String url, Map params, Map headers, Consumer consumer) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map paramsMap = paramsHandle(params); Map headerMap = headersHandle(headers); HttpPost httpPost = handleHttpPost(url, headerMap, paramsMap); executorService.execute(new HttpAsyncThreadCallBack(httpConnection, httpPost, consumer)); } /** * @param url 请求地址 * @param params 请求参数 * @param headers 请求头信息 * @param consumer 回调方法 * @throws IOException io异常 */ public void asyncApiPut(String url, Map params, Map headers, Consumer consumer) throws IOException { CloseableHttpClient httpConnection = HttpManager.getHttpConnection(url); Map paramsMap = paramsHandle(params); Map headerMap = headersHandle(headers); HttpPut httpPut = handleHttpPut(url, headerMap, paramsMap); executorService.execute(new HttpAsyncThreadCallBack(httpConnection, httpPut, consumer)); } private HttpPost handleHttpPost(String url, Map headerMap, Map paramsMap) throws UnsupportedEncodingException { String contentType = ""; HttpPost httpPost = new HttpPost(url.trim()); for (Map.Entry entry : headerMap.entrySet()) { httpPost.setHeader(entry.getKey(), entry.getValue()); if ("Content-Type".equalsIgnoreCase(entry.getKey())) { contentType = entry.getValue(); } } if (Strings.isNullOrEmpty(contentType)) { List nvps = new ArrayList<>(); for (Map.Entry entry : paramsMap.entrySet()) { nvps.add(new BasicNameValuePair(entry.getKey(), String.valueOf(entry.getValue()))); } httpPost.setHeader("Content-Type", HttpArgsType.DEFAULT_CONTENT_TYPE); httpPost.setEntity(new UrlEncodedFormEntity(nvps)); } else if (contentType.toUpperCase().startsWith(HttpArgsType.X_WWW_FORM_URLENCODED.toUpperCase())) { List nvps = new ArrayList<>(); for (Map.Entry entry : paramsMap.entrySet()) { nvps.add(new BasicNameValuePair(entry.getKey(), String.valueOf(entry.getValue()))); } httpPost.setEntity(new UrlEncodedFormEntity(nvps)); // } else if (contentType.toUpperCase().startsWith(HttpArgsType.APPLICATION_JSON.toUpperCase())) { } else{ StringEntity stringEntity = new StringEntity(JSON.toJSONString(paramsMap),DEFAULT_ENCODING); httpPost.setEntity(stringEntity); } return httpPost; } public HttpPost uploadFileByInputStream(String url,InputStream inputStream, String fileKey,String fileName, Map params, Map headers){ MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setCharset(StandardCharsets.UTF_8); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); builder.addBinaryBody(fileKey,inputStream, ContentType.MULTIPART_FORM_DATA,fileName); ContentType contentType= ContentType.create("text/plain",StandardCharsets.UTF_8); for (Map.Entry param : params.entrySet()){ StringBody stringBody = new StringBody(String.valueOf(param.getValue()), contentType); builder.addPart(param.getKey(),stringBody); } HttpPost httpPost = new HttpPost(url.trim()); for (Map.Entry entry : headers.entrySet()) { if("Content-Type".equalsIgnoreCase(entry.getKey())){ continue; } httpPost.setHeader(entry.getKey(), entry.getValue()); } HttpEntity entity = builder.build(); httpPost.setEntity(entity); return httpPost; } public HttpPost uploadFileByInputStream(String url,File file, String fileKey,String fileName, Map params, Map headers){ MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); builder.addBinaryBody(fileKey,file, ContentType.MULTIPART_FORM_DATA,fileName); for (Map.Entry param : params.entrySet()){ StringBody stringBody = new StringBody(String.valueOf(param.getValue()),ContentType.MULTIPART_FORM_DATA); builder.addPart(param.getKey(),stringBody); } HttpPost httpPost = new HttpPost(url.trim()); for (Map.Entry entry : headers.entrySet()) { if("Content-Type".equalsIgnoreCase(entry.getKey())){ continue; } httpPost.setHeader(entry.getKey(), entry.getValue()); } HttpEntity entity = builder.build(); httpPost.setEntity(entity); return httpPost; } private HttpPut handleHttpPut(String url, Map headerMap, Map paramsMap) throws UnsupportedEncodingException { String contentType = ""; HttpPut httpPut = new HttpPut(url.trim()); for (Map.Entry entry : headerMap.entrySet()) { httpPut.setHeader(entry.getKey(), entry.getValue()); if ("Content-Type".equalsIgnoreCase(entry.getKey())) { contentType = entry.getValue(); } } if (Strings.isNullOrEmpty(contentType)) { List nvps = new ArrayList<>(); for (Map.Entry entry : paramsMap.entrySet()) { nvps.add(new BasicNameValuePair(entry.getKey(), String.valueOf(entry.getValue()))); } httpPut.setHeader("Content-Type", HttpArgsType.DEFAULT_CONTENT_TYPE); httpPut.setEntity(new UrlEncodedFormEntity(nvps)); } else if (contentType.toUpperCase().startsWith(HttpArgsType.X_WWW_FORM_URLENCODED.toUpperCase())) { List nvps = new ArrayList<>(); for (Map.Entry entry : paramsMap.entrySet()) { nvps.add(new BasicNameValuePair(entry.getKey(), String.valueOf(entry.getValue()))); } httpPut.setEntity(new UrlEncodedFormEntity(nvps)); } else if (contentType.toUpperCase().startsWith(HttpArgsType.APPLICATION_JSON.toUpperCase())) { StringEntity stringEntity = new StringEntity(JSON.toJSONString(paramsMap),DEFAULT_ENCODING); httpPut.setEntity(stringEntity); } return httpPut; } private String inputStreamToString(InputStream is) { String line = ""; StringBuilder total = new StringBuilder(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); try { while ((line = rd.readLine()) != null) { total.append(line); } } catch (IOException e) { toolUtil.writeErrorLog(e.getLocalizedMessage() + "\n" + e); } return total.toString(); } public Map headersHandle(Map headers) { Map map = new HashMap<>(); if (headers != null && headers.size() > 0) { if (globalCache.header != null && globalCache.header.size() > 0) { map.putAll(globalCache.header); } map.putAll(headers); } else { map.putAll(globalCache.header); } return map; } public Map paramsHandle(Map params) { Map map = new HashMap<>(); if (params != null && params.size() > 0) { if (globalCache.paramMap != null && globalCache.paramMap.size() > 0) { map.putAll(globalCache.paramMap); } map.putAll(params); } else { map.putAll(globalCache.paramMap); } return map; } public String urlHandle(String url, Map params) { if (params == null || params.size() <= 0) { return url; } String serializeParams = serializeParams(params); String getUrl; if (!url.contains("?")) { if (url.endsWith("/")) { getUrl = url.substring(0, url.length() - 1) + "?" + serializeParams; } else { getUrl = url + "?" + serializeParams; } } else { if (url.endsWith("?")) { getUrl = url + serializeParams; } else { getUrl = url + "&" + serializeParams; } } return getUrl; } private String serializeParams(Map params) { if (params != null && params.size() > 0) { StringBuilder builder = new StringBuilder(); for (Map.Entry entry : params.entrySet()) { builder.append("&"); builder.append(entry.getKey()); builder.append("="); builder.append(entry.getValue()); } return removeSeparator(builder); } return ""; } private String removeSeparator(StringBuilder sqlBuilder) { String str = sqlBuilder.toString().trim(); String removeSeparator = "&"; if (str.endsWith(removeSeparator)) { // 如果以分&号结尾,则去除&号 str = str.substring(0, str.length() - 1); } if (str.trim().startsWith(removeSeparator)) { // 如果以&开头,则去除& str = str.substring(1); } return str; } }