动态认证接口调用

用户订阅接口后,可以导出接口文档,在接口文档中可以看到接口的请求路径、请求方式、请求参数格式、返回参数格式、认证方式、请求头说明、输入参数说明、输出参数说明、错误码说明、请求头示例、入参示例以及出参示例等,如果接口是动态认证,还会导出获取Token接口的说明。如-1所示。

图-1 接口文档

 

2.      直接调用接口示例

用户根据接口文档中动态认证提供的认证参数示例,可以调用获取Token的接口拿到Token

  1. 首先调用Token接口获取Token。例如可通过Postman调用接口,如-2所示。

图-2 调用Token接口获取Token

 

  1. 然后通过请求头传递token,获取数据。Postman调用接口如-3所示。

图-3 调用接口

 

3.      通过Java代码调用接口使用示例

用户获取到接口信息后,可通过Java代码调用接口,通过java代码实现示例如下。

  1. Java引入hutoolfastjson的依赖包。

<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>

 

  1. 编写代码调用接口。

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));

        }

    }

}