前言

最近写了一些请求第三方接口的需求,基于http协议的接口,实际上写起来并不麻烦,因为就三个核心要素,地址,请求方式,请求内容。地址他们给的是什么地址就是什么地址,没有变数,请求方式是写死的,复杂且容易出错的地方就是请求内容,不同的请求方式又有不同的传参方式。请求内容是JSON数据还是表单数据,等等,有时因为提供接口的开发者描述不准确,这个时候我们怎么办呢,很简单的一个一个试,基本上只需要试两到三下就能解决问题。你问人是表单数据还是JSON数据可能他们自己也说不清楚,因为这个表单数据的数据格式我也不知道官方的叫法是什么,表单数据,是我自己的理解,意义可能就是为了区分不是JSON数据,有这个问的时间,你已经试出来了。因为就这三种数据,还有一种数据是上传的文件数据,除去文件数据就两种数据。get请求只能发送表单数据,post能发送表单数据,也能发送json数据,一般post用的多。所以记住这两种传参方式就可以了。

实际操作中使用了hutool这个工具类,当然你也可以用大家更为熟知一点的okhttp这个http工具,萝卜青菜都能写,只不过我感觉hutool提供的工具代码比较简洁也便于理解。

依赖

1
implementation('cn.hutool:hutool-all:5.7.19')

实际操作代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

// 发起get请求,并获取返回内容
String body = HttpRequest.get("url") // 请求方式,以及url
.form("name", "小红")// 参数,重复调用即可
.form("age", "24")
.execute().body();// 获取body内容

// 发起post请求发送表单数据,并获取返回数据
String body1 = HttpRequest.post("utl") // post请求
.form("name", "小红")
.form("age", "24")
.execute().body();

// 发送post请求并发送JSON数据,并获取返回信息
String body2 = HttpRequest.post("url")
.body(JSONUtil
.createObj()
.set("name","小红")
.set("age","24")
.toString())
.execute().body();

如果确认传递的参数没有问题,一个一个试基本就能解决问题。如果还有特殊的需求,阅读源码,建议直接看源码,注释都是中文的,使用起来基本没有任何障碍。官网文档地址