当对方的接口参数是@RequestBody类型时如何调用。
1、对方controller接口写发如下:
@PostMapping(value = "/test") @ResponseBody public StringresultBack(@RequestBody String resultJson) { return "helloWorld"; }
2、Apipost的调用方式如下:
3、用java代码调用对方接口方法
(1)引入依赖
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.10</version> </dependency> <dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.6</version> </dependency>
(2)调用方法
/** * @param httpUrl 请求的url * @param jsonParam 原始JSON字符串参数 * @return 响应结果 */ public String doPostJson(String httpUrl, String jsonParam) { HttpURLConnection connection = null; InputStream is = null; OutputStream os = null; BufferedReader br = null; String result = null; try { URL url = new URL(httpUrl); // 通过远程url连接对象打开连接 connection = (HttpURLConnection) url.openConnection(); // 设置连接请求方式 connection.setRequestMethod("POST"); // 设置连接主机服务器超时时间:15000毫秒 connection.setConnectTimeout(15000); // 设置读取主机服务器返回数据超时时间:60000毫秒 connection.setReadTimeout(60000); // 允许向服务器输出数据 connection.setDoOutput(true); // 允许从服务器读取数据 connection.setDoInput(true); // 设置Content-Type为application/json connection.setRequestProperty("Content-Type", "application/json;"); // 如果需要设置其他请求头,如Authorization,可以在这里添加 // connection.setRequestProperty("Authorization", "Bearer your_token_here"); // 检查JSON参数是否为空 if (jsonParam == null || jsonParam.trim().isEmpty()) { throw new IllegalArgumentException("JSON参数不能为空"); } // 通过连接对象获取一个输出流 os = connection.getOutputStream(); // 写入JSON参数,指定UTF-8编码 os.write(jsonParam.getBytes("UTF-8")); os.flush(); // 检查响应状态码 int responseCode = connection.getResponseCode(); if (responseCode == 200) { is = connection.getInputStream(); } else { // 非200状态码使用错误流 is = connection.getErrorStream(); } // 处理响应流 if (is != null) { br = new BufferedReader(new InputStreamReader(is, "UTF-8")); StringBuffer sbf = new StringBuffer(); String temp; while ((temp = br.readLine()) != null) { sbf.append(temp); } result = responseCode == 200 ? sbf.toString() : "Error (code: " + responseCode + "): " + sbf.toString(); } else { result = "No response from server, code: " + responseCode; } } catch (MalformedURLException e) { e.printStackTrace(); result = "URL格式错误: " + e.getMessage(); } catch (IllegalArgumentException e) { e.printStackTrace(); result = "参数错误: " + e.getMessage(); } catch (IOException e) { e.printStackTrace(); result = "IO异常: " + e.getMessage(); } finally { // 关闭资源 if (br != null) { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } if (os != null) { try { os.close(); } catch (IOException e) { e.printStackTrace(); } } if (is != null) { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } // 断开连接 if (connection != null) { connection.disconnect(); } } return result; }
这一切,似未曾拥有