java请求http服务-参数是@RequestBody String resultJson 类型
当对方的接口参数是@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 类型的更多相关文章
- http 请求参数之Query String Parameters、Form Data、Request Payload
Query String Parameters 当发起一次GET请求时,参数会以url string的形式进行传递.即?后的字符串则为其请求参数,并以&作为分隔符. 如下http请求报文头: ...
- jmeter 的java请求代码在main方法里面执行
1.新建一个java请求执行加法类 public class TestDemo { public int Tdemo(int a,int b){ int sum = 0; sum = a+b; ret ...
- Feign服务调用请求方式及参数总结
前言 最近做微服务架构的项目,在用feign来进行服务间的调用.在互调的过程中,难免出现问题,根据错误总结了一下,主要是请求方式的错误和接参数的错误造成的.在此进行一下总结记录.以下通过分为三种情况说 ...
- 实现在GET请求下调用WCF服务时传递对象(复合类型)参数
WCF实现RESETFUL架构很容易,说白了,就是使WCF能够响应HTTP请求并返回所需的资源,如果有人不知道如何实现WCF支持HTTP请求的,可参见我之前的文章<实现jquery.ajax及原 ...
- SpringMVC中post请求参数注解@requestBody使用问题
一.httpClient发送Post 原文https://www.cnblogs.com/Vdiao/p/5339487.html public static String httpPostWithJ ...
- Netty实现java多线程Post请求解析(Map参数类型)—SKY
netty解析Post的键值对 解析时必须加上一个方法,ch.pipeline().addLast(new HttpObjectAggregator(2048)); 放在自己的Handel前面. ht ...
- java程序利用ansible修改redis服务参数
第一步,java调用shell paraname和paravalue是传给playbook的变量. try { String cmd5 = "sudo ansible-playbook /s ...
- Java 请求webServce接口 带参数
public String getWebServiceByParams(String param){ //获取基金缴付记录 // Post请求的url,与get不同的是不需要带参数 URL postU ...
- 【JMeter】JMeter完成一个java请求的压测
先定义一下我说的remoteService:即远程调用服务,没有http的url.不对外提供或者对外提供有限的服务.具体视各公司的代码架构所定,比如有些公司为web工程,scf服务,db.scf即为服 ...
- Jmeter性能测试之如何写Java请求测试用例类
一. 引言: 最近工作中的一个项目要求做性能测试,该项目由提供服务的几个应用组成,选用的框架是阿里巴巴公司开源的服务框架Dubbo.关于Dubbo的介绍,网上也有很多资料,本人只是做了粗略的了解,没有 ...
随机推荐
- SQL 日常练习 (十四)
最近的项目都比较忙, 没太有时间来做练习, 不过 sql 这块, 还是始终要保持良好的手感, 我已经渐渐感觉到, 随着写得越来越多, 当然不只是在这里, 更多是在工作中, 不过涉及信息安全不能共享. ...
- IT/互联网行业突围之路:ChatGPT驱动下的未来
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- 工具:Fscan-windows使用教程
下载地址: https://github.com/shadow1ng/fscan windwos10-64位下载: 下载到本地文件夹然后直接运行:
- TVM: 编译深度学习模型的快速入门教程
支持的TVM硬件后端概述 下图显示了 TVM 目前支持的硬件后端: 在本教程中,将选择 cuda 和 llvm 作为目标后端.首先,让导入 Relay 和 TVM. import numpy as n ...
- eclipse从安装到配置Tomcat及运行helloworld
eclipse安装 0.下载 官方地址https://www.eclipse.org/downloads/packages/ 下载那个版本大家参见下图自行取舍叭 1.安装 解压缩 推荐的解压工具7-z ...
- Web安全入门学习--攻防世界web安全新手区过关心得
这几天也是废了小小功夫,完成了这十道题目. 这十道题目说难不难,说简单对刚入门的同学来说也没有那么简单,但是做完可以对web有最初步的了解 下面开始解题 1.view_source 作为第一题,这题还 ...
- java-mybatis-手动分页工具类
使用 List<PhcpSaBankAl> saBankAlList = phcpSaBankAlDao.getBankInfoList(loginUserType.getCityCode ...
- Raft论文(中英翻译)
In Search of an Understandable Consensus Algorithm(Extended Version) 寻找一种可理解的一致性算法(拓展版) 作者:斯坦福大学的Die ...
- 3-6softmax回归从0开始实现
3-6softmax回归从0开始实现 import torch from IPython import display from d2l import torch as d2l batch_size ...
- jupyter notebook中使用pytorch
jupyter notebook中使用pytorch 1.问题 在使用pytorch时,使用jupyter notebook无法调用,也没有可以调整更改的环境 错误提示:No module named ...