当对方的接口参数是@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;charset=UTF-8"); // 如果需要设置其他请求头,如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;
}

java请求http服务-参数是@RequestBody String resultJson 类型的更多相关文章

  1. http 请求参数之Query String Parameters、Form Data、Request Payload

    Query String Parameters 当发起一次GET请求时,参数会以url string的形式进行传递.即?后的字符串则为其请求参数,并以&作为分隔符. 如下http请求报文头: ...

  2. jmeter 的java请求代码在main方法里面执行

    1.新建一个java请求执行加法类 public class TestDemo { public int Tdemo(int a,int b){ int sum = 0; sum = a+b; ret ...

  3. Feign服务调用请求方式及参数总结

    前言 最近做微服务架构的项目,在用feign来进行服务间的调用.在互调的过程中,难免出现问题,根据错误总结了一下,主要是请求方式的错误和接参数的错误造成的.在此进行一下总结记录.以下通过分为三种情况说 ...

  4. 实现在GET请求下调用WCF服务时传递对象(复合类型)参数

    WCF实现RESETFUL架构很容易,说白了,就是使WCF能够响应HTTP请求并返回所需的资源,如果有人不知道如何实现WCF支持HTTP请求的,可参见我之前的文章<实现jquery.ajax及原 ...

  5. SpringMVC中post请求参数注解@requestBody使用问题

    一.httpClient发送Post 原文https://www.cnblogs.com/Vdiao/p/5339487.html public static String httpPostWithJ ...

  6. Netty实现java多线程Post请求解析(Map参数类型)—SKY

    netty解析Post的键值对 解析时必须加上一个方法,ch.pipeline().addLast(new HttpObjectAggregator(2048)); 放在自己的Handel前面. ht ...

  7. java程序利用ansible修改redis服务参数

    第一步,java调用shell paraname和paravalue是传给playbook的变量. try { String cmd5 = "sudo ansible-playbook /s ...

  8. Java 请求webServce接口 带参数

    public String getWebServiceByParams(String param){ //获取基金缴付记录 // Post请求的url,与get不同的是不需要带参数 URL postU ...

  9. 【JMeter】JMeter完成一个java请求的压测

    先定义一下我说的remoteService:即远程调用服务,没有http的url.不对外提供或者对外提供有限的服务.具体视各公司的代码架构所定,比如有些公司为web工程,scf服务,db.scf即为服 ...

  10. Jmeter性能测试之如何写Java请求测试用例类

    一. 引言: 最近工作中的一个项目要求做性能测试,该项目由提供服务的几个应用组成,选用的框架是阿里巴巴公司开源的服务框架Dubbo.关于Dubbo的介绍,网上也有很多资料,本人只是做了粗略的了解,没有 ...

随机推荐

  1. SQL 日常练习 (十四)

    最近的项目都比较忙, 没太有时间来做练习, 不过 sql 这块, 还是始终要保持良好的手感, 我已经渐渐感觉到, 随着写得越来越多, 当然不只是在这里, 更多是在工作中, 不过涉及信息安全不能共享. ...

  2. IT/互联网行业突围之路:ChatGPT驱动下的未来

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...

  3. 工具:Fscan-windows使用教程

    下载地址: https://github.com/shadow1ng/fscan windwos10-64位下载:  下载到本地文件夹然后直接运行:

  4. TVM: 编译深度学习模型的快速入门教程

    支持的TVM硬件后端概述 下图显示了 TVM 目前支持的硬件后端: 在本教程中,将选择 cuda 和 llvm 作为目标后端.首先,让导入 Relay 和 TVM. import numpy as n ...

  5. eclipse从安装到配置Tomcat及运行helloworld

    eclipse安装 0.下载 官方地址https://www.eclipse.org/downloads/packages/ 下载那个版本大家参见下图自行取舍叭 1.安装 解压缩 推荐的解压工具7-z ...

  6. Web安全入门学习--攻防世界web安全新手区过关心得

    这几天也是废了小小功夫,完成了这十道题目. 这十道题目说难不难,说简单对刚入门的同学来说也没有那么简单,但是做完可以对web有最初步的了解 下面开始解题 1.view_source 作为第一题,这题还 ...

  7. java-mybatis-手动分页工具类

    使用 List<PhcpSaBankAl> saBankAlList = phcpSaBankAlDao.getBankInfoList(loginUserType.getCityCode ...

  8. Raft论文(中英翻译)

    In Search of an Understandable Consensus Algorithm(Extended Version) 寻找一种可理解的一致性算法(拓展版) 作者:斯坦福大学的Die ...

  9. 3-6softmax回归从0开始实现

    3-6softmax回归从0开始实现 import torch from IPython import display from d2l import torch as d2l batch_size ...

  10. jupyter notebook中使用pytorch

    jupyter notebook中使用pytorch 1.问题 在使用pytorch时,使用jupyter notebook无法调用,也没有可以调整更改的环境 错误提示:No module named ...