java业务代码发送http请求(Post方式:请求参数为JSON格式;Get方式)

2023-05-16

实际开发中,可能需要发送http请求到第三方服务获取数据,于是就有以下应用:

依赖:

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.78</version>
</dependency>
<dependency>
	<groupId>org.apache.httpcomponents</groupId>
	<artifactId>httpclient</artifactId>
	<version>4.5.13</version>
</dependency>

假设我需要在我的业务代码中调用该地址:

url:http://xx.xx:xxxx/user/count

请求方法:post

内容类型:application/json

请求参数:id, username

返回参数:code 响应结果 int类型

                  msg 响应消息 string

                  data 响应数据 string(json字符串)

请求头:U-Token 校对权限的token

java 发送请求代码(封装成一个方法,业务代码中调用该方法即可):

private String sendPost(String url, String id, String username, String token) throws IOException {
        // 用于保存第三方公司定义的json格式的返回结果数据
        String result = "";

        // 封装请求参数并转JSON
        Map<String, String> params = new HashedMap<>();
        params.put("id", id);
        params.put("username", username);
        String jsonMap = JSON.toJSONString(params);

        // 创建httpclient对象
        CloseableHttpClient client = HttpClients.createDefault();

        // 创建post方式请求对象
        HttpPost httpPost = new HttpPost(url);

        // 头部携带的token
        if (token != null && !token.equals("")) {
            // 设置token,其中U-Token 是第三方(接口作者)定义的token名
            httpPost.setHeader("U-Token", token);
        }

        // 设置参数到请求对象中
        StringEntity entity = new StringEntity(jsonMap, "UTF-8");
        entity.setContentEncoding("UTF-8");
        entity.setContentType("application/json");
        httpPost.setEntity(entity);

        // 执行请求操作,并拿到结果(同步阻塞)
        CloseableHttpResponse response = client.execute(httpPost);

        if (response.getStatusLine().getStatusCode() == 200) {
            // 网络连接正常,将结果赋给result对象,此时result 对象保存的就是第三方公司定义的json格式的返回结果数据
            result = EntityUtils.toString(response.getEntity(), "UTF-8");
        }

        // 释放链接
        response.close();

        return result;
    }

模拟业务代码调用:

 public void test() throws IOException {
        String result = sendPost("http://xx.xx:xxxx/user/count", "1", "张三");

        // 非空判断
        if (!result.equals("")) {
            // 将json字符串转对象,并获取第三方的响应数据
            JSONObject jsonObject = JSON.parseObject(result);
            Integer code = jsonObject.getInteger("code");
            String msg = jsonObject.getString("msg");
            String data = jsonObject.getString("data");
        }
    }

至此,成功完成调用。

拓展:get请求

public String sendGet(String url) throws IOException {
        String result = "";

        // 创建httpclient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();

        // 创建get方式请求对象
        HttpGet httpGet = new HttpGet(url);
        httpGet.addHeader("Content-type", "application/json");

        // 通过请求对象获取响应对象
        CloseableHttpResponse response = httpClient.execute(httpGet);

        // 获取结果实体
        // 判断网络连接状态码是否正常(0--200都数正常)
        if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
            result = EntityUtils.toString(response.getEntity(), "utf-8");
        }
        // 释放链接
        response.close();

        return result;
    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java业务代码发送http请求(Post方式:请求参数为JSON格式;Get方式) 的相关文章

随机推荐

  • 【一则文章带你了解JavaScript】

    前言 xff1a 想要入门JS xff0c 那我们必须首先了解一下JS的作用 xff0c 我们学习后可以做些什么呢 xff1f 一 首先 xff0c 网页中的表单动态校验以及密码强度的检测是会用到JS的 二 其次 xff0c 我们的网页高级
  • jQuery实现王者荣耀手风琴案例(知识块讲解+案例)

    前言 xff1a 这个案例是几年前的了 xff0c 现在的王者官网是没有这个手风琴模块的 xff0c 我了解到这个案例 xff0c 是受到了黑马程序员知名教师 pink老师的启发 xff0c 我相信大家也都不陌生 xff0c 同样也是我非常
  • 错误问题: Cannot read property ‘XXX‘ of undefined

    undefined不能读取属性XXX 说明定义变量里的值是undefined 查看报错的代码顺藤摸瓜 那打印console看一下 很关键 一定要学会打印 有可能是代码的书写错误了 xff08 大意写错了 xff09 当发现问题后 要学会顺腾
  • Node.js——fs的模块的读取文件-书写文件

    目录 一 fs模块的介绍与初始化 二 fs readFile 读取文件 第二种方法 xff1a 失败演示 xff1a 三 小结 四 fs writeFile 方法向指定文件中写入内容 五 案例 整理用户信息 一 fs模块的介绍与初始化 fs
  • MySQL卸载不干净-MySQL Connector Net xxx文件怎么也删除不了?一招解决它

    相信很多人都遇到过这个问题 xff0c MySQL手动总是卸载不干净 今天没想到让我遇到了 xff0c 那么它就是自讨苦吃 哈哈哈 xff08 这波感谢一下微软 xff0c 为什么 xff1f 大家往下看 xff09 绝招 xff1a 既然
  • uniapp -- 关于uni.navigateTo方法无法跳转的解决方法

    今天做页面跳转的时候遇到了一个问题 xff0c uni navigateTo 方法不是万能的 x1f914 我的需求是在一个component目录下的一个组件中点击遍历出来的组件进入另一个组件 xff0c 我觉得有点绕 xff0c 所以我把
  • Python入门第一章笔记 从安装到编写hello world

    1 下载Python安装包 xff1b 可以到官网下载 xff1a https www python org 但是如果没有翻墙的话 xff0c 下载会很慢 25M安装包 xff0c 需要1个小时以上 如果没有耐心等可以在csdn进行下载 x
  • 谈谈 《 JavaScript - DOM编程艺术 》这本书

    前言 好吧 xff0c 现在已经2023年了 xff0c 对于这本书 xff08 第二版 xff09 来说可能有点老了 xff0c 这本书不是很难理解 xff0c 但也不是很适合新手读 xff0c 当然 xff0c 这本书并不是百宝书 x1
  • 前端程序员 从学校到工作转变的学习历程

    今天是星期一 xff0c 美好而又不是那么美好的上班开始了 xff0c 从学校到职场也有几个月时间了 xff0c 整体来说体验一般般 x1f914 xff0c xff08 请原谅我 这篇文章不配一张图的话 xff0c 会显得文字密密麻麻的
  • 分享项目 - Vue3 + TS + element-ui-plus 项目 -- Table表格表单

    文章目录 前言项目地址以及怎么阅读别人的代码整体代码分页数据作者是怎么处理的 usePagination顺藤摸瓜找到 api 接口的封装api 接口再往底层找全局请求封装与请求拦截器 service ts 前言 今天看一个 ts 项目的 t
  • SpringBoot工程的创建流程

    文章目录 一 初始化时导入的几个基本依赖二 pom文件需要修改的几个地方三 pom文件需要再增加的几个依赖四 maven仓库记得改成自己电脑本地的 xff01 xff01 xff01 五 报错的关于test目录的两个包六 根据数据创建实体类
  • 在matlab中使用find()函数删选数据

    find xff08 xff09 函数 可以查找非零元素的索引和值 拿具体实例来讲 clear clc A 61 1 2 3 456 66 77 343 44 4 3 4 5 A find A 2 gt 61 50 61 删选出A矩阵中第二
  • 【数据结构】二叉树的构建(C语言实现)

    1 树概念及结构 1 1树的概念 树是一种非线性 的数据结构 xff0c 它是由n xff08 n gt 61 0 xff09 个有限结点组成一个具有层次关系的集合 把它叫做树是因 为它看起来像一棵倒挂的树 xff0c 也就是说它是根朝上
  • 解决resultMap报错

    发现问题是使用resultMap来指定类型封装结果的时候出现错误 错误如下 首先排除代码层面的错误 点开错误也没有发现原因 经过查找原来是数据库的字段名和实体的实体名不一致 resultMap则不能自动封装数据 使用reultType 也并
  • Linux防火墙——iptables以及firewalld的使用介绍

    本文基于Linux上CentOS 7版本配合iptables iptables services firewalld等服务进行演示 一 防火墙概念以及Netfilter机制介绍 1 概念 2 防火墙两大类型 3 Netfilter功能 二
  • AOP是什么?如何使用AOP?

    AOP 基本概念是什么 xff1f 什么是AOP xff1f AOP 就是面向切面编程 xff0c 或者叫面向方面编程 xff0c 或者开玩笑的说叫面向方便面编程 在软件业 xff0c AOP为Aspect Oriented Program
  • 情人节浪漫表白,程序员的专属浪漫-----烟花表白

    谁说程序员不懂浪漫 xff1f for birth death love 43 43 do love 43 43 while death 可执行的exe文件我放在文章后面了 xff01 直接双击点开就可以使用了 最终效果 xff1a 运行环
  • 养老产业政策链接

    江西省养老政策文件 xff1a 江西省养老服务条例 http mzw ganzhou gov cn gzsmzjy c103172 202201 d238525b35bb47b49b3de312c9b63a60 shtml 南昌市养老服务体
  • 生产消费模型详解以及代码实现(Java)

    生产消费模型的由来以及定义 xff1a 生产消费者模型是程序设计当中一种非常常见的设计模式 xff0c 被广泛应用于消息队列以及其他的一些场景当中 xff0c xff0c 生产消费模型其中包括三者 xff08 生产者 xff0c 消费者 x
  • java业务代码发送http请求(Post方式:请求参数为JSON格式;Get方式)

    实际开发中 xff0c 可能需要发送http请求到第三方服务获取数据 xff0c 于是就有以下应用 xff1a 依赖 xff1a lt dependency gt lt groupId gt com alibaba lt groupId g