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;
    }
相关推荐
三无少女指南1 小时前
从这里开始:Java 后端与 AI 工程的三条阅读路线
java·学习路线·ai工程
香蕉大香蕉(06敬畏市场)1 小时前
MySQL 单点详解(07)
java·数据库·mysql·ai·博客·八股
nice_lcj5202 小时前
深入理解 Java 反射:从 Class 对象到方法调用(含性能实测 + 迷你 IOC 实战 + 面试考点)
java·开发语言·后端·面试
骑着蜗牛撵大象3272 小时前
2026 后端 AI 工程化:Spring AI 管调用、MCP 管工具、Agent 内嵌管自治
java·人工智能·后端·spring·ai·可观测性·mcp
tryxr2 小时前
JVM 垃圾回收机制
java·jvm·gc·垃圾回收
揣一尾游鱼yu3 小时前
Spring上(IOC)笔记
java·笔记·spring·ioc
荣码4 小时前
长上下文与大文档处理:200页PDF怎么喂给AI,我踩了4个坑
java·python
极限挑战哥4 小时前
共享电单车联营平台分账架构实践:二清合规与自动分账零人工方案
java·大数据·人工智能·微信小程序·架构·微信公众平台
皮皮林5514 小时前
比 VMware 更快,更轻的虚拟机,横空出世!
java
Thomas.Sir5 小时前
第13课:MyBatis-Plus整合SpringBoot4.x,分页、条件查询、逻辑删除实战
java·spring boot