HttpResponse.java 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package com.jeeplus.modules.sys.web;
  2. import org.apache.http.Consts;
  3. import org.apache.http.HttpEntity;
  4. import org.apache.http.client.config.RequestConfig;
  5. import org.apache.http.client.methods.CloseableHttpResponse;
  6. import org.apache.http.client.methods.HttpPost;
  7. import org.apache.http.entity.ContentType;
  8. import org.apache.http.entity.mime.HttpMultipartMode;
  9. import org.apache.http.entity.mime.MultipartEntityBuilder;
  10. import org.apache.http.impl.client.CloseableHttpClient;
  11. import org.apache.http.impl.client.HttpClients;
  12. import org.apache.http.util.EntityUtils;
  13. import org.springframework.web.multipart.MultipartFile;
  14. import java.io.File;
  15. import java.io.IOException;
  16. import java.nio.file.Files;
  17. import java.util.Map;
  18. /**
  19. * @author wang_xy
  20. * @description
  21. * @Version 1.0
  22. * @params
  23. * @return
  24. * @since 2022/9/15 10:22
  25. */
  26. public class HttpResponse {
  27. public static String doPostFile2(String url, Map<String, String> param, File file) {
  28. // 创建Httpclient对象
  29. CloseableHttpClient httpClient = HttpClients.createDefault();
  30. String resultString = "";
  31. CloseableHttpResponse response = null;
  32. HttpPost httppost = new HttpPost(url);
  33. try {
  34. // HttpMultipartMode.RFC6532参数的设定是为避免文件名为中文时乱码
  35. MultipartEntityBuilder builder = MultipartEntityBuilder.create().setMode(HttpMultipartMode.RFC6532);
  36. // 设置请求的编码格式
  37. builder.setCharset(Consts.UTF_8);
  38. builder.setContentType(ContentType.MULTIPART_FORM_DATA);
  39. // 添加文件,也可以添加字节流
  40. builder.addBinaryBody("file", file);
  41. //或者使用字节流也行,根据具体需要使用
  42. // builder.addBinaryBody("file", Files.readAllBytes(file.toPath()),ContentType.APPLICATION_OCTET_STREAM,file.getName());
  43. // 或者builder.addPart("file",new FileBody(file));
  44. // 添加参数
  45. if (param != null) {
  46. for (String key : param.keySet()) {
  47. builder.addTextBody(key, param.get(key));
  48. }
  49. }
  50. HttpEntity reqEntity = builder.build();
  51. httppost.setEntity(reqEntity);
  52. // 设置超时时间
  53. httppost.setConfig(getConfig());
  54. response = httpClient.execute(httppost);
  55. resultString = EntityUtils.toString(response.getEntity(), "GBK");
  56. } catch (Exception e) {
  57. e.printStackTrace();
  58. } finally {
  59. try {
  60. response.close();
  61. } catch (IOException e) {
  62. // TODO Auto-generated catch block
  63. e.printStackTrace();
  64. }
  65. }
  66. return resultString;
  67. }
  68. private static RequestConfig getConfig() {
  69. return RequestConfig.custom().setConnectionRequestTimeout(60000).setSocketTimeout(120000)
  70. .setConnectTimeout(60000).build();
  71. }
  72. }