From eac48696e8df9a0a6eace257adcea4ee203d6fe0 Mon Sep 17 00:00:00 2001 From: zjh <1084500556@qq.com> Date: 星期四, 02 一月 2025 16:53:58 +0800 Subject: [PATCH] zjh20250102 --- ltkj-admin/src/main/java/com/ltkj/web/wxUtils/HttpClientUtils.java | 302 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 294 insertions(+), 8 deletions(-) diff --git a/ltkj-admin/src/main/java/com/ltkj/web/wxUtils/HttpClientUtils.java b/ltkj-admin/src/main/java/com/ltkj/web/wxUtils/HttpClientUtils.java index 6b8b492..88623b0 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/wxUtils/HttpClientUtils.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/wxUtils/HttpClientUtils.java @@ -1,6 +1,8 @@ package com.ltkj.web.wxUtils; +import cn.hutool.json.JSONUtil; +import lombok.extern.slf4j.Slf4j; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; @@ -21,19 +23,24 @@ import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import org.springframework.stereotype.Component; - import java.io.*; +import java.net.HttpURLConnection; import java.net.URL; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.UUID; /** * httpClient 宸ュ叿绫� + * * @create 2019-02-10 涓嬪崍 2:49 */ @Component +@Slf4j public class HttpClientUtils { /** @@ -46,20 +53,24 @@ /** * 闈欐�佸唴閮ㄧ被---浣滅敤锛氬崟渚嬩骇鐢熺被鐨勫疄渚� - * @author Administrator * + * @author Administrator */ private static class LazyHolder { private static final HttpClientUtils INSTANCE = new HttpClientUtils(); } - HttpClientUtils(){} - public static HttpClientUtils getInstance(){ + + HttpClientUtils() { + } + + public static HttpClientUtils getInstance() { return LazyHolder.INSTANCE; } /** * 鍙戦�� post璇锋眰 + * * @param httpUrl 鍦板潃 */ public String sendHttpPost(String httpUrl) { @@ -69,8 +80,9 @@ /** * 鍙戦�� post璇锋眰 + * * @param httpUrl 鍦板潃 - * @param params 鍙傛暟(鏍煎紡:key1=value1&key2=value2) + * @param params 鍙傛暟(鏍煎紡:key1=value1&key2=value2) */ public String sendHttpPost(String httpUrl, String params) { HttpPost httpPost = new HttpPost(httpUrl);// 鍒涘缓httpPost @@ -85,10 +97,232 @@ return sendHttpPost(httpPost); } + + public static String sendPost(String httpUrl, Map<String, Object> maps) { + + try { + // 1. 鍒涘缓 URL 瀵硅薄 + URL url = new URL(httpUrl); + // 2. 鍒涘缓 HttpURLConnection 瀵硅薄 + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + // 3. 璁剧疆璇锋眰鏂规硶涓� POST + connection.setRequestMethod("POST"); + // 4. 璁剧疆 Content-Type 澶撮儴瀛楁 + connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8"); + // 6. 鍚戞湇鍔″櫒鍙戦�佹暟鎹� + String requestBody = JSONUtil.toJsonStr(maps); + log.info(httpUrl+"鍏ュ弬: "+requestBody); +// String requestBody1 = maps.toString(); + byte[] postData = requestBody.getBytes("UTF-8"); + connection.setDoOutput(true); + try (OutputStream outputStream = connection.getOutputStream()) { + outputStream.write(postData); + } + + // 8. 鑾峰彇鍝嶅簲鏁版嵁 + try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) { + String line; + StringBuilder response = new StringBuilder(); + while ((line = reader.readLine()) != null) { + response.append(line); + } + log.info("====================================================="); + log.info(httpUrl+"鍑哄弬"); + log.info(response.toString()); + connection.disconnect(); + return response.toString(); + } + } catch (IOException e) { + e.printStackTrace(); + } + + return null; + } + + public static String sendPostToken(String httpUrl, Map<String, Object> maps,String authorization) { + + try { + // 1. 鍒涘缓 URL 瀵硅薄 + URL url = new URL(httpUrl); + // 2. 鍒涘缓 HttpURLConnection 瀵硅薄 + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + // 3. 璁剧疆璇锋眰鏂规硶涓� POST + connection.setRequestMethod("POST"); + // 4. 璁剧疆 Content-Type 澶撮儴瀛楁 + connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8"); + connection.setRequestProperty("Authorization", authorization); + // 6. 鍚戞湇鍔″櫒鍙戦�佹暟鎹� + String requestBody = JSONUtil.toJsonStr(maps); + log.info(httpUrl+"鍏ュ弬: "+requestBody); +// String requestBody1 = maps.toString(); + byte[] postData = requestBody.getBytes("UTF-8"); + connection.setDoOutput(true); + try (OutputStream outputStream = connection.getOutputStream()) { + outputStream.write(postData); + } + + // 8. 鑾峰彇鍝嶅簲鏁版嵁 + try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) { + String line; + StringBuilder response = new StringBuilder(); + while ((line = reader.readLine()) != null) { + response.append(line); + } + log.info("====================================================="); + log.info(httpUrl+"鍑哄弬"); + log.info(response.toString()); + connection.disconnect(); + return response.toString(); + } + } catch (IOException e) { + e.printStackTrace(); + } + + return null; + } + + public static String sendPostTokenFormUrlencoded(String httpUrl, Map<String, Object> maps, String authorization) { + HttpURLConnection connection = null; + OutputStreamWriter writer = null; + BufferedReader reader = null; + StringBuilder response = new StringBuilder(); + + try { + // 鍒涘缓 URL 瀵硅薄 + URL url = new URL(httpUrl); + // 鎵撳紑杩炴帴 + connection = (HttpURLConnection) url.openConnection(); + + // 璁剧疆璇锋眰鏂规硶涓� POST + connection.setRequestMethod("POST"); + // 璁剧疆璇锋眰澶� Content-Type 涓� application/x-www-form-urlencoded + connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); + + // 濡傛灉闇�瑕� Authorization Header + if (authorization != null && !authorization.isEmpty()) { + connection.setRequestProperty("Authorization", authorization); + } + + // 璁剧疆鍏佽杈撳嚭 + connection.setDoOutput(true); + + // 鏋勫缓琛ㄥ崟鏁版嵁 + StringBuilder postData = new StringBuilder(); + for (Map.Entry<String, Object> entry : maps.entrySet()) { + if (postData.length() > 0) { + postData.append("&"); + } + postData.append(URLEncoder.encode(entry.getKey(), "UTF-8")) + .append("=") + .append(URLEncoder.encode(entry.getValue().toString(), "UTF-8")); + } + + // 鑾峰彇杈撳嚭娴佸苟鍐欏叆琛ㄥ崟鏁版嵁 + writer = new OutputStreamWriter(connection.getOutputStream()); + writer.write(postData.toString()); + writer.flush(); + + // 鑾峰彇鍝嶅簲 + reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String line; + while ((line = reader.readLine()) != null) { + response.append(line); + } + } catch (Exception e) { + e.printStackTrace(); + return null; + } finally { + // 鍏抽棴娴� + try { + if (writer != null) writer.close(); + if (reader != null) reader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + if (connection != null) { + connection.disconnect(); + } + } + return response.toString(); + } + + public static String sendPostTokenFormData(String httpUrl, Map<String, Object> maps, String authorization) { + HttpURLConnection connection = null; + DataOutputStream outStream = null; + BufferedReader reader = null; + StringBuilder response = new StringBuilder(); + + // 杈圭晫瀛楃涓� + String boundary = "----WebKitFormBoundary" + UUID.randomUUID().toString().replaceAll("-", ""); + String CRLF = "\r\n"; // 鎹㈣绗� + + try { + // 鍒涘缓 URL 瀵硅薄 + URL url = new URL(httpUrl); + // 鎵撳紑杩炴帴 + connection = (HttpURLConnection) url.openConnection(); + + // 璁剧疆璇锋眰鏂规硶涓� POST + connection.setRequestMethod("POST"); + // 璁剧疆璇锋眰澶� Content-Type 涓� multipart/form-data + connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); + + // 濡傛灉闇�瑕� Authorization Header + if (authorization != null && !authorization.isEmpty()) { + connection.setRequestProperty("Authorization", authorization); + } + + // 璁剧疆鍏佽杈撳嚭 + connection.setDoOutput(true); + + // 鑾峰彇杈撳嚭娴� + outStream = new DataOutputStream(connection.getOutputStream()); + + // 閬嶅巻浼犲叆鐨勮〃鍗曟暟鎹紝骞舵寜鐓� multipart/form-data 鏍煎紡鍐欏叆 + for (Map.Entry<String, Object> entry : maps.entrySet()) { + outStream.writeBytes("--" + boundary + CRLF); + outStream.writeBytes("Content-Disposition: form-data; name=\"" + entry.getKey() + "\"" + CRLF); + outStream.writeBytes("Content-Type: text/plain; charset=UTF-8" + CRLF); + outStream.writeBytes(CRLF); // 杩欓噷鏄垎闅旂锛岀┖涓�琛� + outStream.writeBytes(entry.getValue().toString() + CRLF); + } + + // 缁撴潫 multipart/form-data 鍙戦�佹暟鎹儴鍒� + outStream.writeBytes("--" + boundary + "--" + CRLF); + + // 鍒锋柊杈撳嚭娴� + outStream.flush(); + + // 鑾峰彇鍝嶅簲 + reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String line; + while ((line = reader.readLine()) != null) { + response.append(line); + } + + } catch (Exception e) { + e.printStackTrace(); + return null; + } finally { + // 鍏抽棴娴� + try { + if (outStream != null) outStream.close(); + if (reader != null) reader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + if (connection != null) { + connection.disconnect(); + } + } + return response.toString(); + } + /** * 鍙戦�� post璇锋眰 + * * @param httpUrl 鍦板潃 - * @param maps 鍙傛暟 + * @param maps 鍙傛暟 */ public String sendHttpPost(String httpUrl, Map<String, String> maps) { HttpPost httpPost = new HttpPost(httpUrl);// 鍒涘缓httpPost @@ -105,8 +339,10 @@ return sendHttpPost(httpPost); } + /** * 鍙戦�丳ost璇锋眰 + * * @param httpPost * @return */ @@ -123,12 +359,12 @@ long execStart = System.currentTimeMillis(); response = httpClient.execute(httpPost); long execEnd = System.currentTimeMillis(); - System.out.println("=================鎵цpost璇锋眰鑰楁椂锛�"+(execEnd-execStart)+"ms"); + System.out.println("=================鎵цpost璇锋眰鑰楁椂锛�" + (execEnd - execStart) + "ms"); long getStart = System.currentTimeMillis(); entity = response.getEntity(); responseContent = EntityUtils.toString(entity, "UTF-8"); long getEnd = System.currentTimeMillis(); - System.out.println("=================鑾峰彇鍝嶅簲缁撴灉鑰楁椂锛�"+(getEnd-getStart)+"ms"); + System.out.println("=================鑾峰彇鍝嶅簲缁撴灉鑰楁椂锛�" + (getEnd - getStart) + "ms"); } catch (Exception e) { e.printStackTrace(); } finally { @@ -149,6 +385,7 @@ /** * 鍙戦�� get璇锋眰 + * * @param httpUrl */ public String sendHttpGet(String httpUrl) { @@ -158,6 +395,7 @@ /** * 鍙戦�� get璇锋眰Https + * * @param httpUrl */ public String sendHttpsGet(String httpUrl) { @@ -167,6 +405,7 @@ /** * 鍙戦�丟et璇锋眰 + * * @param httpGet * @return */ @@ -206,6 +445,7 @@ /** * 鍙戦�丟et璇锋眰Https + * * @param httpGet * @return */ @@ -244,6 +484,7 @@ /** * 鍙戦�亁ml鏁版嵁 + * * @param url * @param xmlData * @return @@ -286,4 +527,49 @@ } + + public static String sendPost(String httpUrl, Map<String, Object> maps,String token) { + + try { + // 1. 鍒涘缓 URL 瀵硅薄 + URL url = new URL(httpUrl); + // 2. 鍒涘缓 HttpURLConnection 瀵硅薄 + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + // 3. 璁剧疆璇锋眰鏂规硶涓� POST + connection.setRequestMethod("POST"); + // 4. 璁剧疆 Content-Type 澶撮儴瀛楁 + connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8"); + //璁剧疆璇锋眰token + connection.setRequestProperty("Authorization",token); + // 6. 鍚戞湇鍔″櫒鍙戦�佹暟鎹� + String requestBody = JSONUtil.toJsonStr(maps); + log.info(httpUrl+"鍏ュ弬: "+requestBody); +// String requestBody1 = maps.toString(); + byte[] postData = requestBody.getBytes("UTF-8"); + connection.setDoOutput(true); + try (OutputStream outputStream = connection.getOutputStream()) { + outputStream.write(postData); + } + + // 8. 鑾峰彇鍝嶅簲鏁版嵁 + try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) { + String line; + StringBuilder response = new StringBuilder(); + while ((line = reader.readLine()) != null) { + response.append(line); + } + log.info("====================================================="); + log.info(httpUrl+"鍑哄弬"); + log.info(response.toString()); + connection.disconnect(); + return response.toString(); + } + } catch (IOException e) { + e.printStackTrace(); + } + + return null; + } + + } -- Gitblit v1.8.0