[关闭]
@liruiyi962464 2024-08-05T18:51:16.000000Z 字数 8758 阅读 52

后端通过POST互相调用 参考文档

代码


HttpClientUtils 工具类

  1. package org.jeecg.modules.untils;
  2. import com.fasterxml.jackson.databind.ObjectMapper;
  3. import org.apache.http.HttpResponse;
  4. import org.apache.http.NameValuePair;
  5. import org.apache.http.client.HttpClient;
  6. import org.apache.http.client.config.RequestConfig;
  7. import org.apache.http.client.entity.UrlEncodedFormEntity;
  8. import org.apache.http.client.methods.HttpGet;
  9. import org.apache.http.client.methods.HttpPost;
  10. import org.apache.http.entity.StringEntity;
  11. import org.apache.http.impl.client.CloseableHttpClient;
  12. import org.apache.http.impl.client.HttpClientBuilder;
  13. import org.apache.http.impl.client.HttpClients;
  14. import org.apache.http.message.BasicHeader;
  15. import org.apache.http.message.BasicNameValuePair;
  16. import org.apache.http.util.EntityUtils;
  17. import org.apache.logging.log4j.LogManager;
  18. import org.apache.logging.log4j.Logger;
  19. import java.io.IOException;
  20. import java.net.URI;
  21. import java.net.URISyntaxException;
  22. import java.util.ArrayList;
  23. import java.util.Map;
  24. import java.util.Set;
  25. public class HttpClientUtils {
  26. private static final Logger logger = LogManager.getLogger(HttpClientUtils.class);
  27. /**
  28. * 封装POST请求(Map入参)
  29. *
  30. * @param url 请求的路径
  31. * @param map 请求的参数
  32. * @return
  33. * @throws IOException
  34. */
  35. public static String post(String url, Map map) throws IOException {
  36. // 1、创建HttpClient对象
  37. CloseableHttpClient httpClient = HttpClients.createDefault();
  38. // 2、创建请求方式的实例
  39. HttpPost httpPost = new HttpPost();
  40. //httpPost.addHeader(new BasicHeader("Content-Type", "application/json"));
  41. //httpPost.addHeader(new BasicHeader("Authorization", "Bearer your_access_token_here"));
  42. try {
  43. httpPost.setURI(new URI(url));
  44. } catch (URISyntaxException e) {
  45. e.printStackTrace();
  46. }
  47. // 3、添加请求参数(设置请求和传输超时时间)
  48. RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(60000).setConnectTimeout(60000).build();
  49. httpPost.setConfig(requestConfig);
  50. ArrayList<NameValuePair> list = new ArrayList<>();
  51. Set<Map.Entry> entrySet = map.entrySet();
  52. for (Map.Entry entry : entrySet) {
  53. String key = entry.getKey().toString();
  54. String value = entry.getValue().toString();
  55. list.add(new BasicNameValuePair(key, value));
  56. }
  57. //System.out.println("canshu:"+list.toString());
  58. httpPost.setEntity(new UrlEncodedFormEntity(list, org.apache.http.protocol.HTTP.UTF_8));
  59. System.out.println(httpPost.getEntity().toString());;
  60. // 4、发送Http请求
  61. HttpResponse response = httpClient.execute(httpPost);
  62. // 5、获取返回的内容
  63. String result = null;
  64. int statusCode = response.getStatusLine().getStatusCode();
  65. if (200 == statusCode) {
  66. result = EntityUtils.toString(response.getEntity());
  67. } else {
  68. logger.info("请求第三方接口出现错误,状态码为:{}", statusCode);
  69. return null;
  70. }
  71. // 6、释放资源
  72. httpPost.abort();
  73. httpClient.getConnectionManager().shutdown();
  74. return result;
  75. }
  76. /**
  77. * 封装POST请求(String入参)
  78. *
  79. * @param url 请求的路径
  80. * @param data String类型数据
  81. * @return
  82. * @throws IOException
  83. */
  84. public static String post(String url, String data) throws IOException {
  85. // 1、创建HttpClient对象
  86. HttpClient httpClient = HttpClientBuilder.create().build();
  87. // 2、创建请求方式的实例
  88. HttpPost httpPost = new HttpPost(url);
  89. // 3、添加请求参数(设置请求和传输超时时间)
  90. RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(60000).setConnectTimeout(60000).build();
  91. httpPost.setConfig(requestConfig);
  92. httpPost.setHeader("Accept", "application/json");
  93. httpPost.setHeader("Content-Type", "application/json");
  94. // 设置请求参数
  95. httpPost.setEntity(new StringEntity(data, "UTF-8"));
  96. // 4、发送Http请求
  97. HttpResponse response = httpClient.execute(httpPost);
  98. // 5、获取返回的内容
  99. String result = null;
  100. int statusCode = response.getStatusLine().getStatusCode();
  101. if (200 == statusCode) {
  102. result = EntityUtils.toString(response.getEntity());
  103. } else {
  104. logger.info("请求第三方接口出现错误,状态码为:{}", statusCode);
  105. return null;
  106. }
  107. // 6、释放资源
  108. httpPost.abort();
  109. httpClient.getConnectionManager().shutdown();
  110. return result;
  111. }
  112. /**
  113. * 封装GET请求
  114. *
  115. * @param url
  116. * @return
  117. * @throws IOException
  118. */
  119. public static String get(String url) throws IOException {
  120. // 1、创建HttpClient对象
  121. HttpClient httpClient = HttpClientBuilder.create().build();
  122. // 2、创建请求方式的实例
  123. HttpGet httpGet = new HttpGet(url);
  124. // 3、添加请求参数(设置请求和传输超时时间)
  125. RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(60000).setConnectTimeout(60000).build();
  126. httpGet.setConfig(requestConfig);
  127. // 4、发送Http请求
  128. HttpResponse response = httpClient.execute(httpGet);
  129. // 5、获取返回的内容
  130. String result = null;
  131. int statusCode = response.getStatusLine().getStatusCode();
  132. if (200 == statusCode) {
  133. result = EntityUtils.toString(response.getEntity());
  134. } else {
  135. logger.info("请求第三方接口出现错误,状态码为:{}", statusCode);
  136. return null;
  137. }
  138. // 6、释放资源
  139. httpGet.abort();
  140. httpClient.getConnectionManager().shutdown();
  141. return result;
  142. }
  143. /**
  144. * 封装POST请求(Map入参)--lry
  145. *
  146. * @param url 请求的路径
  147. * @param map 请求的参数
  148. * @return
  149. * @throws IOException
  150. */
  151. public static String postJSon(String url, Map map) throws IOException {
  152. // 1、创建HttpClient对象
  153. CloseableHttpClient httpClient = HttpClients.createDefault();
  154. // 2、创建请求方式的实例
  155. HttpPost httpPost = new HttpPost();
  156. httpPost.addHeader(new BasicHeader("Content-Type", "application/json"));
  157. //httpPost.addHeader(new BasicHeader("Authorization", "Bearer your_access_token_here"));
  158. try {
  159. httpPost.setURI(new URI(url));
  160. } catch (URISyntaxException e) {
  161. e.printStackTrace();
  162. }
  163. // 3、添加请求参数(设置请求和传输超时时间)
  164. RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(60000).setConnectTimeout(60000).build();
  165. httpPost.setConfig(requestConfig);
  166. ObjectMapper mapper = new ObjectMapper(); // 创建 ObjectMapper 对象,用于 JSON 序列化和反序列化
  167. // 序列化对象为 JSON 字符串
  168. String jsonString = mapper.writeValueAsString(map);
  169. StringEntity entity = new StringEntity(jsonString, "UTF-8");
  170. httpPost.setEntity(entity);
  171. // 4、发送Http请求
  172. HttpResponse response = httpClient.execute(httpPost);
  173. // 5、获取返回的内容
  174. String result = null;
  175. int statusCode = response.getStatusLine().getStatusCode();
  176. if (200 == statusCode) {
  177. result = EntityUtils.toString(response.getEntity());
  178. } else {
  179. logger.info("请求第三方接口出现错误,状态码为:{}", statusCode);
  180. return null;
  181. }
  182. // 6、释放资源
  183. httpPost.abort();
  184. httpClient.getConnectionManager().shutdown();
  185. return result;
  186. }
  187. }

方案一 使用工具类原方法 封装POST请求(Map入参)

java1 调用

  1. //推送数据给文件传输系统 2024-8-1 muzi
  2. private void pushDataForWenJian(YwTicketBasic ywTicketBasic){
  3. //一个为接口配置内的路径,,,倒是目前开发阶段,先随意
  4. YwInterfaceConfig ywInterfaceConfig = new YwInterfaceConfig();
  5. //String url = ywInterfaceConfig.getInterfacePath();
  6. String url = "http://192.168.10.97:8085/jeecg-boot/weld/zctWeld/zuiwaiceng";
  7. try {
  8. Date nowdate = new Date();
  9. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  10. Map<String,Object> map = new HashMap<>();
  11. map.put("tokenPush","123456");
  12. ObjectMapper mapper = new ObjectMapper();
  13. String jsonString = mapper.writeValueAsString(ywTicketBasic);
  14. map.put("ywTicketBasic",jsonString);
  15. map.put("timePush",sdf.format(nowdate));
  16. String reponseparam = HttpClientUtils.post(url,map);
  17. //不需要对数据就行处理
  18. com.alibaba.fastjson.JSONObject parseObject = com.alibaba.fastjson.JSONObject.parseObject(reponseparam.toString());
  19. //把相关参数分解出来并存储,在接口日志中,记录调用内容
  20. Date responsedate = new Date();
  21. System.out.println("返回的内容:"+parseObject.toString());
  22. //存储接口记录
  23. //ywInterfaceRecordService.addByPublic(reponseparam,parseObject,nowdate,responsedate,ywInterfaceConfig.getId());
  24. } catch (IOException e) {
  25. log.error("错误信息:文件传输系统推送数据报错",e);
  26. //e.printStackTrace();
  27. }
  28. }

java2 接收参数

  1. @PostMapping(value = "/zuiwaiceng")
  2. public Result<?> abutmentInterface(HttpServletRequest request, HttpServletResponse response){
  3. try {
  4. System.out.println(request);
  5. // 接收参数
  6. String timePush = request.getParameter("timePush");
  7. String tokenPush = request.getParameter("tokenPush");
  8. String ywTicketBasic = request.getParameter("ywTicketBasic");
  9. // 序列化成对象
  10. Gson gson = new Gson();
  11. YwTicketBasic yw = gson.fromJson(ywTicketBasic, YwTicketBasic.class);
  12. System.out.println(yw);
  13. System.out.println(timePush);
  14. System.out.println(tokenPush);
  15. System.out.println(ywTicketBasic);
  16. }catch (Exception e){
  17. e.printStackTrace();
  18. }finally {
  19. return Result.OK("成功");
  20. }
  21. }

方案二 封装POST请求(Map入参)--lry

java1 调用

  1. //推送数据给文件传输系统 2024-8-1 muzi
  2. private void pushDataForWenJian(YwTicketBasic ywTicketBasic){
  3. //一个为接口配置内的路径,,,倒是目前开发阶段,先随意
  4. YwInterfaceConfig ywInterfaceConfig = new YwInterfaceConfig();
  5. //String url = ywInterfaceConfig.getInterfacePath();
  6. String url = "http://192.168.10.103:8083/jeecg-boot/interface/record/abutmentInterface";
  7. try {
  8. Date nowdate = new Date();
  9. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  10. Map<String,Object> map = new HashMap<>();
  11. map.put("tokenPush","123456");
  12. ObjectMapper mapper = new ObjectMapper();
  13. String jsonString = mapper.writeValueAsString(ywTicketBasic);
  14. map.put("ywTicketBasic",jsonString);
  15. map.put("timePush",sdf.format(nowdate));
  16. String reponseparam = HttpClientUtils.postJSon(url,map);
  17. //不需要对数据就行处理
  18. com.alibaba.fastjson.JSONObject parseObject = com.alibaba.fastjson.JSONObject.parseObject(reponseparam.toString());
  19. //把相关参数分解出来并存储,在接口日志中,记录调用内容
  20. Date responsedate = new Date();
  21. System.out.println("返回的内容:"+parseObject.toString());
  22. //存储接口记录
  23. //ywInterfaceRecordService.addByPublic(reponseparam,parseObject,nowdate,responsedate,ywInterfaceConfig.getId());
  24. } catch (IOException e) {
  25. log.error("错误信息:文件传输系统推送数据报错",e);
  26. //e.printStackTrace();
  27. }
  28. }

java2 接收参数 使用map接收

  1. @Override
  2. public Result<?> abutmentInterface(Map<String, Object> data, HttpServletRequest req, HttpServletResponse resp) {
  3. try {
  4. //获取传递过来参数
  5. String timePush =(String) data.get("timePush");
  6. String tokenPush =(String) data.get("tokenPush");
  7. String ywTicketBasic = (String) data.get("ywTicketBasic");
  8. //json转换成java对象
  9. Gson gson = new Gson();
  10. ZcTicket zcTicket = gson.fromJson(ywTicketBasic, ZcTicket.class);
  11. }catch (Exception e){
  12. return null
  13. }
  14. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注