用户订阅接口后,可以导出接口文档,在接口文档中可以看到接口的请求路径、请求方式、请求参数格式、返回参数格式、认证方式、请求头说明、输入参数说明、输出参数说明、错误码说明、请求头示例、入参示例以及出参示例等,如果接口是动态认证,还会导出获取Token接口的说明。如图-1所示。
用户根据接口文档中动态认证提供的认证参数示例,可以调用获取Token的接口拿到Token。
首先调用Token接口获取Token。例如可通过Postman调用接口,如图-2所示。
图-2 调用Token接口获取Token
然后通过请求头传递token,获取数据。Postman调用接口如图-3所示。
用户获取到接口信息后,可通过Java代码调用接口,通过java代码实现示例如下。
在Java引入hutool和fastjson的依赖包。
|
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-http</artifactId> <version>5.7.13</version> </dependency> |
编写代码调用接口。
|
import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSONObject; import java.util.HashMap; import java.util.Map;
public class HutoolHttpClientExample { public static void main(String[] args) { //获取动态token String url = "https://10.121.71.165:33027/api/token/getToken"; Map<String, String> headerMap = new HashMap<>(); headerMap.put("Content-Type", "application/json"); //设置请求体参数 JSONObject paramMap = new JSONObject(); paramMap.put("appId", "testworkspace"); paramMap.put("code", 411); String requestBody = JSONObject.toJSONString(paramMap); String tokenResult = HttpUtil.createPost(url).addHeaders(headerMap).body(requestBody).execute().body(); JSONObject result = JSONObject.parseObject(tokenResult); String code = String.valueOf(result.get("code")); //判断是否获取token成功 if ("200".equals(code)) { JSONObject json = JSONObject.parseObject(String.valueOf(result.get("data"))); String token = String.valueOf(json.get("token")); //请求数据 String requestUrl = "https://10.121.71.165:33027/api/v1/getPersonInfo1640001"; //设置查询参数 requestUrl = requestUrl + "?id=123&token=1qaz@WSX"; //设置请求头参数 Map<String, String> headers = new HashMap<>(); headers.put("cmp-token","asdfg"); headers.put("auth-token", "123456"); headers.put("X-H3C-TOKEN", token); headers.put("Content-Type", "application/json"); //设置请求体参数 JSONObject body = new JSONObject(); body.put("userName", "zhangsan"); body.put("password", "123456"); JSONObject person = new JSONObject(); person.put("phone", "18756785678"); person.put("addr", "zhengzhou"); body.put("personInfo", person); String reqBody = JSONObject.toJSONString(body); String resultData = HttpUtil.createPost(requestUrl).addHeaders(headers).body(reqBody).execute().body(); // 处理响应内容 System.out.println("Response Content: " + JSONObject.parseObject(resultData)); } } } |