From 179c4d64313c9b7572778da4aaaf6c6584fe457d Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期二, 20 五月 2025 23:48:08 +0800
Subject: [PATCH] 修改文件上传类型限制

---
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/HttpClientUtil.java |  533 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 489 insertions(+), 44 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/HttpClientUtil.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/HttpClientUtil.java
index a2ade11..0472925 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/HttpClientUtil.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/HttpClientUtil.java
@@ -1,25 +1,49 @@
 package com.panzhihua.common.utlis;
 
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.security.KeyManagementException;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
 
-import com.panzhihua.common.constants.HttpConstant;
-import lombok.extern.slf4j.Slf4j;
+import com.alibaba.fastjson.JSONObject;
 import org.apache.http.Header;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.HttpClient;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
 import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpUriRequest;
+import org.apache.http.conn.ssl.NoopHostnameVerifier;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.conn.ssl.TrustStrategy;
 import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.impl.client.HttpClients;
 import org.apache.http.message.BasicHeader;
+import org.apache.http.ssl.SSLContexts;
 import org.apache.http.util.EntityUtils;
 import org.springframework.util.ObjectUtils;
 
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
+import com.panzhihua.common.constants.HttpConstant;
+
+import lombok.extern.slf4j.Slf4j;
+
+import javax.net.ssl.SSLContext;
+
+import static com.panzhihua.common.utlis.wx.WXPayConstants.USER_AGENT;
 
 /**
  * @program: springcloud_k8s_panzhihuazhihuishequ
@@ -31,21 +55,28 @@
 public class HttpClientUtil {
     /**
      * 通过post方式调用http接口
-     * @param url     url路径
-     * @param jsonParam    json格式的参数
-     * @param reSend     重发次数
-     * @param headerKey     header键值
-     * @param headerValue     headervalue
+     * 
+     * @param url
+     *            url路径
+     * @param jsonParam
+     *            json格式的参数
+     * @param reSend
+     *            重发次数
+     * @param headerKey
+     *            header键值
+     * @param headerValue
+     *            headervalue
      * @return
      * @throws Exception
      */
-    public static String sendPostByJson(String url, String jsonParam,int reSend,String headerKey,String headerValue) {
-        //声明返回结果
+    public static String sendPostByJson(String url, String jsonParam, int reSend, String headerKey,
+        String headerValue) {
+        // 声明返回结果
         String result = "";
-        //开始请求API接口时间
-        long startTime=System.currentTimeMillis();
-        //请求API接口的响应时间
-        long endTime= 0L;
+        // 开始请求API接口时间
+        long startTime = System.currentTimeMillis();
+        // 请求API接口的响应时间
+        long endTime = 0L;
         HttpEntity httpEntity = null;
         HttpResponse httpResponse = null;
         HttpClient httpClient = null;
@@ -54,73 +85,73 @@
             httpClient = HttpClientFactory.getInstance().getHttpClient();
             // 设置请求头和报文
             HttpPost httpPost = HttpClientFactory.getInstance().httpPost(url);
-            Header header=new BasicHeader("Accept-Encoding",null);
+            Header header = new BasicHeader("Accept-Encoding", null);
             httpPost.setHeader(header);
             if (!ObjectUtils.isEmpty(headerKey)) {
-                httpPost.setHeader(headerKey,headerValue);
+                httpPost.setHeader(headerKey, headerValue);
             }
             // 设置报文和通讯格式
             StringEntity stringEntity = new StringEntity(jsonParam, HttpConstant.UTF8_ENCODE);
             stringEntity.setContentEncoding(HttpConstant.UTF8_ENCODE);
             stringEntity.setContentType(HttpConstant.APPLICATION_JSON);
             httpPost.setEntity(stringEntity);
-            log.info("请求{}接口的参数为{}",url,jsonParam);
-            //执行发送,获取相应结果
+//            log.info("请求{}接口的参数为{}", url, jsonParam);
+            // 执行发送,获取相应结果
             httpResponse = httpClient.execute(httpPost);
-            httpEntity= httpResponse.getEntity();
+            httpEntity = httpResponse.getEntity();
             result = EntityUtils.toString(httpEntity);
         } catch (Exception e) {
-            log.error("请求{}接口出现异常",url,e);
+            log.error("请求{}接口出现异常", url, e);
             if (reSend > 0) {
-                log.info("请求{}出现异常:{},进行重发。进行第{}次重发",url,e.getMessage(),(HttpConstant.REQ_TIMES-reSend +1));
-                result = sendPostByJson(url, jsonParam, reSend - 1,headerKey,headerValue);
+                log.info("请求{}出现异常:{},进行重发。进行第{}次重发", url, e.getMessage(), (HttpConstant.REQ_TIMES - reSend + 1));
+                result = sendPostByJson(url, jsonParam, reSend - 1, headerKey, headerValue);
                 if (result != null && !"".equals(result)) {
                     return result;
                 }
             }
-        }finally {
+        } finally {
             try {
                 EntityUtils.consume(httpEntity);
             } catch (IOException e) {
-                log.error("http请求释放资源异常",e);
+                log.error("http请求释放资源异常", e);
             }
         }
-        //请求接口的响应时间
-        endTime=System.currentTimeMillis();
-        log.info("请求{}接口的响应报文内容为{},本次请求API接口的响应时间为:{}毫秒",url,result,(endTime-startTime));
+        // 请求接口的响应时间
+        endTime = System.currentTimeMillis();
+//        log.info("请求{}接口的响应报文内容为{},本次请求API接口的响应时间为:{}毫秒", url, result, (endTime - startTime));
         return result;
 
     }
 
     /**
      * 使用http请求调用接口,参数类型为xml
-     * @param urlStr    请求地址
-     * @param data  请求参数
-     * @return  调用结果
+     * 
+     * @param urlStr
+     *            请求地址
+     * @param data
+     *            请求参数
+     * @return 调用结果
      */
-    public static String httpsRequest(String urlStr,String data) {
+    public static String httpsRequest(String urlStr, String data) {
         try {
             URL url = new URL(urlStr);
             URLConnection con = url.openConnection();
             con.setDoOutput(true);
-//            con.setRequestProperty("Pragma:", "no-cache");
+            // con.setRequestProperty("Pragma:", "no-cache");
             con.setRequestProperty("Cache-Control", "no-cache");
             con.setRequestProperty("Content-Type", "text/xml");
 
-            OutputStreamWriter out = new OutputStreamWriter(con
-                    .getOutputStream());
+            OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream());
             log.info("urlStr=" + urlStr);
             log.info("xmlInfo=" + data);
             out.write(new String(data.getBytes("UTF-8")));
             out.flush();
             out.close();
-            BufferedReader br = new BufferedReader(new InputStreamReader(con
-                    .getInputStream()));
+            BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
             String line = "";
             StringBuffer sb = new StringBuffer();
             for (line = br.readLine(); line != null; line = br.readLine()) {
-                sb.append(br.readLine());
-                System.out.println(line);
+                sb.append(line);
             }
             return sb.toString();
         } catch (MalformedURLException e) {
@@ -131,5 +162,419 @@
         return "";
     }
 
+    /**
+     * http请求工具类,get请求
+     *
+     * @param url
+     * @param params
+     * @param resonseCharSet
+     * @return
+     * @throws Exception
+     */
+    public static String httpGet(String url, Map<String, Object> params, String... resonseCharSet) throws Exception {
+        DefaultHttpClient defaultHttpClient = null;
+        BufferedReader bufferedReader = null;
+        try {
+            defaultHttpClient = new DefaultHttpClient();
+            if (params != null) {
+                StringBuilder stringBuilder = new StringBuilder();
+                Iterator<String> iterator = params.keySet().iterator();
+                String key;
+                while (iterator.hasNext()) {
+                    key = iterator.next();
+                    Object val = params.get(key);
+                    if (val instanceof List) {
+                        List v = (List)val;
+                        for (Object o : v) {
+                            stringBuilder.append(key).append("=").append(o.toString()).append("&");
+                        }
+                    } else {
+                        stringBuilder.append(key).append("=").append(val.toString()).append("&");
+                    }
+                }
+                stringBuilder.deleteCharAt(stringBuilder.length() - 1);
+                url = url + "?" + stringBuilder.toString();
+                log.info("url:{}", url);
+            }
+            HttpGet httpGet = new HttpGet(url);
+            httpGet.setHeader("Content-Type", "application/json;charset=ut-8");
+            HttpResponse httpResponse = defaultHttpClient.execute(httpGet);
+            if (httpResponse.getStatusLine().getStatusCode() != 200) {
+                String errorLog = "请求失败,errorCode:" + httpResponse.getStatusLine().getStatusCode();
+                log.info("errorLog:{}"+errorLog);
+                throw new Exception(url + errorLog);
+            }
+            // 读取返回信息
+            String charSet = "utf-8";
+            if (resonseCharSet != null && resonseCharSet.length > 0)
+                charSet = resonseCharSet[0];
+            String output;
+            bufferedReader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent(), charSet));
 
+            StringBuilder dataBuilder = new StringBuilder();
+            while ((output = bufferedReader.readLine()) != null) {
+                dataBuilder.append(output);
+            }
+            return dataBuilder.toString();
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw e;
+        } finally {
+            if (defaultHttpClient != null)
+                defaultHttpClient.getConnectionManager().shutdown();
+            if (bufferedReader != null)
+                bufferedReader.close();
+        }
+    }
+
+
+
+    /**
+     * http请求工具类,post请求
+     *
+     * @param url
+     *            url
+     * @param param
+     *            参数值 仅支持String
+     * @return
+     * @throws Exception
+     */
+    public static String httpPost(String url, String param) throws Exception {
+        DefaultHttpClient defaultHttpClient = null;
+        BufferedReader bufferedReader = null;
+        try {
+            defaultHttpClient = new DefaultHttpClient();
+            HttpPost httpPost = new HttpPost(url);
+            httpPost.setHeader("Content-Type", "application/json;charset=utf-8");
+            if (StringUtils.isNotBlank(param)) {
+                log.info("参数值:{}", param);
+                HttpEntity httpEntity = new StringEntity(param, "utf-8");
+                httpPost.setEntity(httpEntity);
+            }
+            HttpResponse httpResponse = defaultHttpClient.execute(httpPost);
+            if (httpResponse.getStatusLine().getStatusCode() != 200) {
+                String errorLog = "请求失败,errorCode:" + httpResponse.getStatusLine().getStatusCode();
+                log.info(errorLog);
+                throw new Exception(url + errorLog);
+            }
+            // 读取返回信息
+            String output;
+            bufferedReader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent(), "utf-8"));
+            StringBuilder stringBuilder = new StringBuilder();
+            while ((output = bufferedReader.readLine()) != null) {
+                stringBuilder.append(output);
+            }
+            log.info("调用微信接口返回的参数:" + stringBuilder.toString());
+            return stringBuilder.toString();
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw e;
+        } finally {
+            if (defaultHttpClient != null)
+                defaultHttpClient.getConnectionManager().shutdown();
+            if (bufferedReader != null)
+                bufferedReader.close();
+        }
+    }
+
+
+
+    // HTTP GET请求
+    public static String sendGet(String url) throws Exception {
+        URL obj = new URL(url);
+        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
+        //默认值GET
+        con.setRequestMethod("GET");
+        //添加请求头
+        con.setRequestProperty("User-Agent", USER_AGENT);
+        int responseCode = con.getResponseCode();
+        log.info("发送 'GET' 请求到 URL:{}" + url);
+        log.info("Response Code:{}" + responseCode);
+        BufferedReader in = new BufferedReader(
+                new InputStreamReader(con.getInputStream()));
+        String inputLine;
+        StringBuffer response = new StringBuffer();
+        while ((inputLine = in.readLine()) != null) {
+            response.append(inputLine);
+        }
+        in.close();
+        //打印结果
+        log.info("uu洗车返回:{}"+response.toString());
+        return response.toString();
+    }
+
+    /**
+     * http请求工具类,post请求
+     *
+     * @param url
+     *            url
+     * @param param
+     *            参数值 仅支持String
+     * @return
+     * @throws Exception
+     */
+    public static String httpPostAndToken(String url, String param,Map headerMap) throws Exception {
+        DefaultHttpClient defaultHttpClient = null;
+        BufferedReader bufferedReader = null;
+        try {
+            defaultHttpClient = new DefaultHttpClient();
+            HttpPost httpPost = new HttpPost(url);
+            httpPost.setHeader("Content-Type", "application/json;charset=utf-8");
+//            httpPost.setHeader("Authorization", headerMap.get("Authorization").toString());
+//            httpPost.setHeader("Host", headerMap.get("Host").toString());
+
+            for (Object key : headerMap.keySet()) {
+                httpPost.setHeader(key.toString(), headerMap.get(key).toString());
+            }
+            if (StringUtils.isNotBlank(param)) {
+                log.info("参数值:{}", param);
+                HttpEntity httpEntity = new StringEntity(param, "utf-8");
+                httpPost.setEntity(httpEntity);
+//                httpPost.setHeader("Content-Length", String.valueOf(httpEntity.getContentLength()));
+            }
+            HttpResponse httpResponse = defaultHttpClient.execute(httpPost);
+            if (httpResponse.getStatusLine().getStatusCode() != 200) {
+                int statusCode = httpResponse.getStatusLine().getStatusCode();
+                String errorLog = "请求失败,errorCode:" + httpResponse.getStatusLine().getStatusCode();
+                log.info(errorLog);
+                throw new Exception(url + errorLog);
+            }
+            // 读取返回信息
+            String output;
+            bufferedReader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent(), "utf-8"));
+            StringBuilder stringBuilder = new StringBuilder();
+            while ((output = bufferedReader.readLine()) != null) {
+                stringBuilder.append(output);
+            }
+            log.info("调用接口返回的参数:" + stringBuilder.toString());
+            return stringBuilder.toString();
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw e;
+        } finally {
+            if (defaultHttpClient != null)
+                defaultHttpClient.getConnectionManager().shutdown();
+            if (bufferedReader != null)
+                bufferedReader.close();
+        }
+    }
+
+    public static void main(String[] args) throws IOException {
+        DefaultHttpClient  defaultHttpClient = new DefaultHttpClient();
+        HttpPost httpPost = new HttpPost("https://dptest.d-power.com.cn:14404/v1/face");
+//        httpPost.setHeader("Content-Type", "application/json;charset=utf-8");
+        httpPost.setHeader("Authorization", "DpToken P3JHgjLbyljfLrFnS9OZbATRJmacdt4b");
+        httpPost.setHeader("Host", "123.60.2.66");
+//        httpPost.setHeader("Content-Length", String.valueOf(entity.getContentLength()));
+
+//        httpPost.setHeader("User-Agent", "Apache-HttpClient/4.5.12 (Java/1.8.0_162)[\\r][\\n]");
+        httpPost.setEntity(new StringEntity("{\"positions\":[{\"role\":\"occupant\",\"communityId\":\"64f99b2ed26106d4f0fe93f4\",\"unitId\":\"64f99b2ed26106d4f0fe93f7\"}],\"tel\":\"15696695118\",\"name\":\"四月里3\",\"timeout\":10,\"image\":\"fsdfsdfsdf\"}", "utf-8"));
+//        httpPost.setHeader("Content-Length", String.valueOf(entity.getContentLength()));
+        HttpResponse httpResponse = defaultHttpClient.execute(httpPost);
+        System.out.println(httpResponse.getEntity());
+    }
+
+    /**
+     * get请求
+     * 
+     * @param url
+     *            请求地址(get请求时参数自己组装到url上)
+     * @param headerMap
+     *            请求头
+     * @return 响应文本
+     */
+    public static String get(String url, Map<String, String> headerMap, String param) {
+        // 请求地址,以及参数设置
+        HttpPost post = new HttpPost(url);
+        if (headerMap != null) {
+            for (Map.Entry<String, String> entry : headerMap.entrySet()) {
+                post.setHeader(entry.getKey(), entry.getValue());
+            }
+        }
+        if (StringUtils.isNotBlank(param)) {
+            log.info("参数值:{}", param);
+            HttpEntity httpEntity = new StringEntity(param, "utf-8");
+            post.setEntity(httpEntity);
+        }
+        // 执行请求,获取相应
+        return getRespString(post);
+    }
+
+    /**
+     * get请求
+     *
+     * @param url
+     *            请求地址(get请求时参数自己组装到url上)
+     * @param headerMap
+     *            请求头
+     * @return 响应文本
+     */
+    public static String getUU(String url, Map<String, String> headerMap, String param) {
+        // 请求地址,以及参数设置
+        HttpPost post = new HttpPost(url);
+
+        SSLContext sslContext = null;
+        try {
+            sslContext = SSLContexts.custom().loadTrustMaterial(null, new TrustStrategy() {
+                @Override
+                public boolean isTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
+                    return true;
+                }
+            }).build();
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        } catch (KeyManagementException e) {
+            e.printStackTrace();
+        } catch (KeyStoreException e) {
+            e.printStackTrace();
+        }
+
+        CloseableHttpClient client = HttpClients.custom().setSslcontext(sslContext).
+                setSSLHostnameVerifier(new NoopHostnameVerifier()).build();
+
+
+        //请求超时时间设置
+        post.setConfig(RequestConfig.custom()// 连接超时时间
+                .setConnectTimeout(5000)
+        // 请求超时时间
+                .setConnectionRequestTimeout(5000)
+        // Socket读取超时时间
+                .setSocketTimeout(5000)
+        // 是否允许重定向
+                .setRedirectsEnabled(false)
+                .build());
+
+         //发送请求
+        CloseableHttpResponse response = null;
+        try {
+            response = client.execute(post);
+        } catch (IOException e) {
+            e.printStackTrace();
+            log.error("request error. ");
+
+        }
+        HttpEntity entity = response.getEntity();
+        try {
+            if (entity != null) {
+                //按指定编码转换结果实体为String类型
+                return EntityUtils.toString(entity, "UTF-8");
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
+
+
+
+    /**
+     * 获取响应信息(String)
+     */
+    public static String getRespString(HttpUriRequest request) {
+        // 获取响应流
+        InputStream in = getRespInputStream(request);
+
+        StringBuilder sb = new StringBuilder();
+        String line;
+
+        BufferedReader br = new BufferedReader(new InputStreamReader(in));
+        try {
+            while ((line = br.readLine()) != null) {
+                sb.append(line);
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        String str = sb.toString();
+        return str;
+    }
+
+    /**
+     * 获取响应信息(InputStream)
+     */
+    public static InputStream getRespInputStream(HttpUriRequest request) {
+        // 获取响应对象
+        HttpResponse response = null;
+        try {
+            response = HttpClients.createDefault().execute(request);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        if (response == null) {
+            return null;
+        }
+        // 获取Entity对象
+        HttpEntity entity = response.getEntity();
+        // 获取响应信息流
+        InputStream in = null;
+        if (entity != null) {
+            try {
+                in = entity.getContent();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return in;
+    }
+
+    /**
+     * 退款请求微信
+     * @param url   请求地址
+     * @param data  请求数据
+     * @param mchId 商户id
+     * @param isTest    是否是测试
+     * @return  退款结果
+     * @throws Exception    抛出异常
+     */
+    public static String doRefund(String url, String data,String mchId,Boolean isTest) throws Exception{
+        KeyStore keyStore  = KeyStore.getInstance("PKCS12");
+        //P12文件目录 证书路径,这里需要你自己修改,linux下还是windows下的根路径
+        String filepath = "/mnt/data/refund/huacheng/";
+
+        System.out.println("filepath->"+filepath);
+        FileInputStream instream = new FileInputStream(filepath+"apiclient_cert.p12");
+        try {
+            keyStore.load(instream, mchId.toCharArray());//这里写密码..默认是你的MCHID
+        } finally {
+            instream.close();
+        }
+
+        // Trust own CA and all self-signed certs
+        SSLContext sslcontext = SSLContexts.custom()
+                .loadKeyMaterial(keyStore, mchId.toCharArray())//这里也是写密码的
+                .build();
+        // Allow TLSv1 protocol only
+        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
+                sslcontext,
+                SSLConnectionSocketFactory.getDefaultHostnameVerifier());
+        CloseableHttpClient httpclient = HttpClients.custom()
+                .setSSLSocketFactory(sslsf)
+                .build();
+        try {
+            HttpPost httpost = new HttpPost(url); // 设置响应头信息
+            httpost.addHeader("Connection", "keep-alive");
+            httpost.addHeader("Accept", "*/*");
+            httpost.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
+            httpost.addHeader("Host", "api.mch.weixin.qq.com");
+            httpost.addHeader("X-Requested-With", "XMLHttpRequest");
+            httpost.addHeader("Cache-Control", "max-age=0");
+            httpost.addHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) ");
+            httpost.setEntity(new StringEntity(data, "UTF-8"));
+            CloseableHttpResponse response = httpclient.execute(httpost);
+            try {
+                HttpEntity entity = response.getEntity();
+
+                String jsonStr = EntityUtils.toString(response.getEntity(), "UTF-8");
+                log.info("请求微信退款接口返回结果:" + JSONObject.toJSONString(jsonStr));
+                EntityUtils.consume(entity);
+                return jsonStr;
+            } finally {
+                response.close();
+            }
+        } finally {
+            httpclient.close();
+        }
+
+    }
 }

--
Gitblit v1.7.1