package com.ydtech.utils; import cn.hutool.core.bean.BeanUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.multipart.FilePart; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity; import org.apache.commons.httpclient.methods.multipart.Part; import org.apache.commons.httpclient.methods.multipart.StringPart; import org.slf4j.Logger; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import java.util.Map; /** * @ClassName HttpUtil * @Description: TODO * @Author * @Date 2021/5/25 **/ public class HttpUtil { /** * 发起https请求并获取结果 * * @param requestUrl 请求地址 * @param requestMethod 请求方式(GET、POST) * @param outputStr 提交的数据 * @return JSONObject(通过JSONObject.get ( key)的方式获取json对象的属性值) */ public static JSONObject HttpRequest(String request, String RequestMethod, String output) { @SuppressWarnings("unused") JSONObject jsonObject = null; StringBuffer buffer = new StringBuffer(); try { //建立连接 URL url = new URL(request); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setDoInput(true); connection.setUseCaches(false); // connection.setRequestMethod(RequestMethod); //设置请求内容编码格式 connection.setRequestProperty("content-type", "application/json;charset=UTF-8"); connection.setRequestProperty("Accept", "application/json;charset=UTF-8"); if (output != null) { OutputStream out = connection.getOutputStream(); out.write(output.getBytes("UTF-8")); out.close(); } //流处理 InputStream input = connection.getInputStream(); // InputStreamReader inputReader = new InputStreamReader(input,"UTF-8"); BufferedReader reader = new BufferedReader(new InputStreamReader(input, "GBK")); String line; while ((line = reader.readLine()) != null) { buffer.append(line); } //关闭连接、释放资源 reader.close(); input.close(); connection.disconnect(); } catch (Exception e) { } return jsonObject; } /** * 带header和json作为body的post * @param url * @param bodyStr body传的json * * @author: lig * @date: 2023年08月14日 0014 */ public static String sendPost(String url,String bodyStr){ System.err.println("请求[post、json、body]参数:"+bodyStr); HttpRequest request = HttpRequest.post(url) .header("Content-Type", "application/json")//以json的方式传递 //     .header("authorization","Bearer abcdefghijklmnopqrstuvwxyz") .body(bodyStr); HttpResponse response = request.execute(); String respStr = response.body(); System.err.println("返回[post、json、body]参数:"+ respStr); return respStr; } /** * 带header和json作为body的post * @param url * @param bodyStr body传的json * * @author: lig * @date: 2023年08月14日 0014 */ public static String sendPost(String url,String bodyStr,Logger log,String apiName){ log.debug(apiName+"\n请求参数:"+bodyStr); HttpRequest request = HttpRequest.post(url) .header("Content-Type", "application/json")//以json的方式传递 //     .header("authorization","Bearer abcdefghijklmnopqrstuvwxyz") .body(bodyStr); HttpResponse response = request.execute(); String respStr = response.body(); log.debug(apiName+"\n返回参数:"+respStr); return respStr; } /** * 带header和json作为body的post * @param url * @param bodyStr body传的json * @param params form传的参数 * * @author: lig * @date: 2023年08月14日 0014 */ public static String sendPost(String url,String bodyStr,Map params){ HttpRequest request = HttpRequest.post(url) .header("Content-Type", "application/json")//以json的方式传递 //     .header("authorization","Bearer abcdefghijklmnopqrstuvwxyz") .body(bodyStr); request.form(params); HttpResponse response = request.execute(); String respStr = response.body(); return respStr; } /** * post from * @param url * @param formMap 附件需要传的类型FilePart * * @author: lig * @date: 2023-08-21 */ public static String sendPostFrom(String url,Map formMap,Logger log,String apiName){ System.err.println("请求[post、json、body]参数:"+ JSONUtil.toJsonStr(formMap)); log.info(apiName + ",请求[post、json、body]参数:"+ JSONUtil.toJsonStr(formMap)); HttpRequest request = HttpRequest.post(url); request.header("Content-Type", "multipart/form-data; "); // // 添加文件参数 // FilePart file1 = new FilePart("file1", new File("path/to/file1.jpg")); request.form(formMap); HttpResponse response = request.execute(); // 处理服务器响应 if (response.isOk()) { String respStr = response.body(); log.info(apiName + "返回[post、json、body]参数:"+ respStr); return respStr; } return null; } /** * post from * @param url * @param formMap 附件需要传的类型FilePart * * @author: lig * @date: 2023-08-21 */ public static String sendPostFrom(String url,Map formMap){ System.err.println("请求[post、json、body]参数:"+ JSONUtil.toJsonStr(formMap)); // log.info(apiName + ",请求[post、json、body]参数:"+ JSONUtil.toJsonStr(formMap)); HttpRequest request = HttpRequest.post(url); request.header("Content-Type", "multipart/form-data; "); // // 添加文件参数 // FilePart file1 = new FilePart("file1", new File("path/to/file1.jpg")); request.form(formMap); HttpResponse response = request.execute(); // 处理服务器响应 if (response.isOk()) { String respStr = response.body(); // log.info(apiName + "返回[post、json、body]参数:"+ respStr); return respStr; } return null; } /** * post from * @param url * @param formMap 附件需要传的类型FilePart * * @author: lig * @date: 2023-08-21 */ public static String sendPostFromFile(Part[] parts,String url){ HttpClient httpClient = new HttpClient(); PostMethod postMethod = new PostMethod(url); postMethod.getParams().setContentCharset("UTF-8"); // postMethod.setParameter(); String response = ""; try { // Part[] parts = new Part[]{ new FilePart("file111", file) }; postMethod.setRequestEntity(new MultipartRequestEntity(parts, postMethod.getParams())); int statusCode = httpClient.executeMethod(postMethod); if (statusCode == HttpStatus.SC_OK) { response = postMethod.getResponseBodyAsString(); System.out.println("Upload successful. Response: " + response); return response; // return response; } else { System.out.println("Upload failed. Status code: " + statusCode); } } catch (FileNotFoundException e) { throw new RuntimeException(e); } catch (HttpException e) { throw new RuntimeException(e); } catch (IOException e) { throw new RuntimeException(e); } return response; } // public static void main(String[] args) { // String url = "https://devyun.guorenpcic.com/api/grecar/photo/upload"; // Map formMap = new HashMap<>(); // formMap.put("businessNo","2322"); // formMap.put("operatorCode","32323"); // formMap.put("comCode","22323"); // formMap.put("fileGroup","DZ"); // // try { // FilePart file1 = new FilePart("file1", new File("D:/Desktop/123.png")); // formMap.put("file",file1); // } catch (FileNotFoundException e) { // throw new RuntimeException(e); // } // // sendPostFrom(url,formMap); // } public static void main(String[] args) { HttpClient httpClient = new HttpClient(); String url = "https://devyun.guorenpcic.com/api/grecar/photo/upload"; PostMethod postMethod = new PostMethod(url); postMethod.getParams().setContentCharset("UTF-8"); // postMethod.getParams().setParameter("businessNo", "T233075000507000205"); // postMethod.getParams().setParameter("operatorCode", "S3000032"); // postMethod.getParams().setParameter("comCode", "307500A3"); // postMethod.getParams().setParameter("fileGroup", "DZ"); ; // File file = new File("D:/upload/image/2023/09/12/f27b4fe4e1fd4f2bfa57b5a560dc792d.jpg"); File file = new File("D:/upload/image/2023/09/25/87b4db2aa2e209b77923238e88088c2d.png"); try { // Part[] parts = { new FilePart("file", file) }; Part[] parts = { new FilePart("file", file) ,new StringPart("businessNo","T233075000507000225") // ,new StringPart("businessNo","T233075000507000205") ,new StringPart("operatorCode","S3000032") ,new StringPart("comCode","307500A3") ,new StringPart("fileGroup","DZ") }; postMethod.setRequestEntity(new MultipartRequestEntity(parts, postMethod.getParams())); // postMethod.setRequestEntity(new MultipartRequestEntity(parts, postMethod.getParams())); int statusCode = httpClient.executeMethod(postMethod); if (statusCode == HttpStatus.SC_OK) { String response = postMethod.getResponseBodyAsString(); System.out.println("Upload successful. Response: " + response); } else { System.out.println("Upload failed. Status code: " + statusCode); } } catch (Exception e) { e.printStackTrace(); } finally { postMethod.releaseConnection(); } } }