java开发hutool HttpUtil网络请求工具使用demo

 更新时间:2023年07月09日 14:31:00   作者:AC编程  
这篇文章主要为大家介绍了hutool之HttpUtil网络请求工具使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、测试代码

import cn.hutool.core.text.UnicodeUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.google.gson.Gson;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class Test {
    public static void main(String[] args) {
        requestToken();
    }
    public static String requestToken() {
        try {
            String url = "https://alanchen.com/auth/getToken/V2";
            HttpRequest request = HttpUtil.createPost(url);
            request.header("PartnerCode", "testCode");
            Map<String, String> param = new HashMap();
            param.put("partnerCode", "testCode");
            param.put("partnerSecret", "secret");
            Gson gson = new Gson();
            String body = gson.toJson(param);
            request.body(body);
            HttpResponse execute = request.execute();
            if (!execute.isOk()) {
                log.error("请求token失败,body={},execute={}", execute.body(), execute);
                throw new RuntimeException(execute.body());
            }
            String res = UnicodeUtil.toString(execute.body());
            JSONObject jsonObject = JSONUtil.parseObj(res, true);
            AuthTokenResResult resultObj = jsonObject.toBean(AuthTokenResResult.class, true);
            log.info("requestToken,resultObj={}", resultObj);
            if (resultObj.getCode() != 200) {
                log.error("获取token失败,code={},msg={},result={}", resultObj.getCode(), resultObj.getMsg(), resultObj);
                throw new RuntimeException("获取token失败,code=" + resultObj.getCode() + ",msg=" + resultObj.getMsg());
            }
            if (resultObj.getData() == null) {
                log.error("获取token为空,code={},msg={},result={}", resultObj.getCode(), resultObj.getMsg(), resultObj);
                throw new RuntimeException("获取token为空,code=" + resultObj.getCode() + ",msg=" + resultObj.getMsg());
            }
            return resultObj.getData().getToken();
        } catch (Exception e) {
            log.error("requestToken失败,msg={}", e.getMessage());
            e.printStackTrace();
            throw new RuntimeException(e.getMessage());
        }
    }
    @Data
    public class AuthTokenResResult {
        private int code;
        private String msg;
        private AuthToken data;
        private long count;
    }
    @Data
    public class AuthToken {
        private String token;
        private long expireAt;
    }
}

二、代码片段

 // 设置请求体参数
String requestBody = "{\"param1\": \"value1\", \"param2\": \"value2\"}";
httpRequest.body(requestBody)
        .setHeader("Content-Type", "application/json")
        .timeout(20000); // 设置超时时间为20秒
// 设置请求参数
httpRequest.setQueryParam("param1", "value1")
          .setHeader("User-Agent", "Hutool")
          .timeout(20000); // 设置超时时间为20秒

以上就是java开发hutool HttpUtil网络请求工具使用demo的详细内容,更多关于hutool HttpUtil网络请求的资料请关注脚本之家其它相关文章!

相关文章

  • redis分布式锁的原理及代码实例

    redis分布式锁的原理及代码实例

    这篇文章主要介绍了redis分布式锁的原理及代码实例,Redis作为一款高性能内存数据库,其提供了一种非常实用的分布式锁解决方案,可以帮助开发人员轻松地实现分布式锁功能,对于分布式系统的开发和维护,具有非常大的实用价值,需要的朋友可以参考下
    2024-01-01
  • Java多线程模拟银行系统存钱问题详解

    Java多线程模拟银行系统存钱问题详解

    本文将利用Java多线程模拟一个简单的银行系统,使用两个不同的线程向同一个账户存钱。文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-09-09
  • Spring Boot启动过程完全解析(二)

    Spring Boot启动过程完全解析(二)

    这篇文章主要介绍了Spring Boot启动过程完全解析(二),需要的朋友可以参考下
    2017-04-04
  • 详解Spring注解@Autowired的实现原理和使用方法

    详解Spring注解@Autowired的实现原理和使用方法

    在使用Spring开发的时候,配置的方式主要有两种,一种是xml的方式,另外一种是 java config的方式,在使用的过程中,我们使用最多的注解应该就是@Autowired注解了,所以本文就给大家讲讲@Autowired注解是如何使用和实现的,需要的朋友可以参考下
    2023-07-07
  • springboot全局异常处理方式@ControllerAdvice和@ExceptionHandler

    springboot全局异常处理方式@ControllerAdvice和@ExceptionHandler

    文章总结了个人在处理全局异常处理时的经验,包括使用`StatusEnum`来定义状态码,旨在为读者提供参考,并鼓励大家支持脚本之家
    2024-11-11
  • Springboot+Redis执行lua脚本的项目实践

    Springboot+Redis执行lua脚本的项目实践

    本文主要介绍了Springboot+Redis执行lua脚本的项目实践,详细的介绍Redis与Lua脚本的结合应用,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • Java 数据结构之堆的概念与应用

    Java 数据结构之堆的概念与应用

    堆是一颗完全二叉树,在这棵树中,所有父节点都满足大于等于其子节点的堆叫大根堆,所有父节点都满足小于等于其子节点的堆叫小根堆,堆虽然是一颗树,但是通常存放在一个数组中,父节点和孩子节点的父子关系通过数组下标来确定
    2021-10-10
  • Easyui的combobox实现动态数据级联效果

    Easyui的combobox实现动态数据级联效果

    这篇文章主要介绍了Easyui的combobox实现动态数据级联效果的相关资料,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • Java日常练习题,每天进步一点点(41)

    Java日常练习题,每天进步一点点(41)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-07-07
  • Springboot 2使用外部Tomcat源码分析

    Springboot 2使用外部Tomcat源码分析

    这篇文章主要介绍了Springboot 2使用外部Tomcat源码分析,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08

最新评论