Hutool的Http调用简单使用

Http调用

http调用即通过http方式调用第三方接口,现成的工具库有很多,如HttpClient、RestTemplate、OKHttp今天主要介绍Hutoolhttp

前置环境

Spring Initializr初始化项目 选择Spring Web和Lombok依赖 Java版本1.8

application.yml配置如下

server:
  servlet:
    context-path: /api
  port: 8123

引入Hutool依赖

  <dependency&gt;
            <groupId&gt;cn.hutool</groupId&gt;
            <artifactId&gt;hutool-all</artifactId&gt;
            <version&gt;5.8.15</version>
  </dependency>

先写一个简单的被调用接口

主要功能就是:

Controller

package com.zd.zdinterface.controller;

import com.zd.zdinterface.model.User;
import org.springframework.web.bind.annotation.*;

/**
 * 查询名称
 * @author zd
 */
@RestController
@RequestMapping("/name")
public class NameController {
    @GetMapping("/")
    public  String getNameByGet(String name) {
        return "GET 你的名字是:" + name;
    }
    @PostMapping("/")
    public  String getNameByPost(@RequestParam String name) {
        return "Post 你的名字是:" + name;
    }
    @PostMapping("/user")
    public  String getUserNameByPost(@RequestBody User user) {
        return user.getUsername();
    }
}

User:

package com.zd.zdinterface.model;

import lombok.Data;

@Data
public class User {
    private String username;
}

开始调用

先写一个简单的Client类

Client:

package com.zd.zdinterface.client;

import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.zd.zdinterface.model.User;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.HashMap;

public class ZdApiClient {
    //调用接口方法public  String getNameByGet(String name) {
        HashMap<String, Object> paramMap = new HashMap<>();
        paramMap.put("name", name);

        String result3= HttpUtil.get("http://localhost:8123/api/name/", paramMap);
        System.out.println(result3);
        return  result3;
    }
    //调用接口方法public  String getNameByPost(@RequestParam String name) {
        HashMap<String, Object> paramMap = new HashMap<>();
        paramMap.put("name", name);

        String result3= HttpUtil.post("http://localhost:8123/api/name/", paramMap);
        System.out.println(result3);
        return  result3;
    }
    //调用接口方法public  String getUserNameByPost(@RequestBody User user) {
        String json = JSONUtil.toJsonStr(user);
        HttpResponse httpResponse = HttpRequest.post("http://localhost:8123/api/name/user")
                .body(json)
                .execute();
        System.out.println(httpResponse.getStatus());
        String result = httpResponse.body();
        System.out.println(result);
        return result;
    }
}

为什么这样写?需要官方文档

Hutool官网

Hutool文档

其中包括安装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R5sSo0YC-1679140828010)(C:UserszdsssAppDataRoamingTyporatypora-user-imagesimage-20230318195636681.png)]

以及使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EONqJiPX-1679140828011)(C:UserszdsssAppDataRoamingTyporatypora-user-imagesimage-20230318195729826.png)]

测试

package com.zd.zdinterface;

import com.zd.zdinterface.client.ZdApiClient;
import com.zd.zdinterface.model.User;

public class Main {
    public static void main(String[] args) {
        ZdApiClient zdApiClient = new ZdApiClient();
        String res1 =  zdApiClient.getNameByGet("zd");
        String res2 =  zdApiClient.getNameByPost("zd");
        User user = new User();
        user.setUsername("zd");
        String res3 =   zdApiClient.getUserNameByPost(user);
        System.out.println(res1);
        System.out.println(res2);
        System.out.println(res3);
    }
}

结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9NIjOZ1Z-1679140828011)(C:UserszdsssAppDataRoamingTyporatypora-user-imagesimage-20230318195900206.png)]
代码GitHub仓库

原文地址:https://blog.csdn.net/qq_39411709/article/details/129641909

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_19783.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注