当前位置: 首页 > 工具软件 > Unirest > 使用案例 >

Unirest的POST和GET写法,Unirest请求怎么写?

卫阳曜
2023-12-01

之前用Postman发请求的时候,有时候需要转代码就会直接转Unirest。现在习惯使用写测试用例来发送请求了。因为有很多需要签名或者加密的请求内容,使用代码来写请求就会比较方便。
那今天就来简单记录一下Unirest的POST请求和GET请求的写法。
首先导入Unirest的依赖:

<dependency>
	<groupId>com.mashape.unirest</groupId>
    <artifactId>unirest-java</artifactId>
    <version>1.4.9</version>
</dependency>

然后就可以写代码了。先来一个POST请求:

Map<String, Object> paramMap = new HashMap<>();
paramMap.put("paramKey", "paramValue");
HttpResponse<String> response = Unirest.post("requestUrl")
	.header("headerName", "headerValue")
	.body(JSON.toJSONString(paramMap))
	.asString();
System.out.println(response.getBody());

这就是一个简单的post请求的写法,如果加上签名、加密之类的就会比较复杂一些,但是测试接口的时候,就可以只修改参数,一步到位,不需要再把签名和加密后的参数复制到postman里,对返回的结果也可以进行一个处理测试。
写一个我自己实际用到的:

@Test
    public void loginByPassword() throws UnirestException {
        Map<String, Object> paramMap = new HashMap<>();
        paramMap.put("phone", phone);
        paramMap.put("password", MD5Utils.string2Md5(password));
        String encryptParam = RSAUtils.buildRSAEncryptByPublicKey(JSON.toJSONString(paramMap), rsaPassportPublicKey);
        Map<String, Object> dataMap = new HashMap<>();
        dataMap.put("data", encryptParam);
        String sign = SignatureUtil.generate(secret(), dataMap, appId());

        Unirest.setTimeouts(0, 0);
        HttpResponse<String> response = Unirest.post(host + "/passport/login/password")
                .header("sign", sign)
                .header("Content-Type", "application/json")
                .body(JSON.toJSONString(dataMap))
                .asString();
        Map<String, String> resultMap = JSON.parseObject(response.getBody(), Map.class);
        if (StringUtils.isNotBlank(resultMap.get("data"))) {
            String result = RSAUtils.buildRSADecryptByPrivateKey(resultMap.get("data"), rsaPrivateKey());
            System.out.println("密码登录:" + result);
        }
    }

这样签名、请求参数加密、响应参数解密都测试到了。而且每次请求只需要点一下运行,不需要手动生成签名和加密,测试效率提升了不少。
(由于历史原因,这里的签名不得不使用MD5,实际生产环境中如果使用了RSA加密的话,签名建议同样使用RSA)。


然后写一个简单的GET请求:

Map<String, Object> paramMap = new HashMap<>();
        paramMap.put("paramKey", "paramValue");
        HttpResponse<String> response = Unirest.get("requestUrl")
                .header("headerName", "headerValue")
                .queryString(paramMap)
                .asString();
        System.out.println(response.getBody());

其实跟POST请求区别很小,只是把Unirest.post(url)改成Unirest.get(url),下面参数的.body(JSON.toJSONString(paramMap))改成.queryString(paramMap)就好了。


喜欢本文的朋友不要忘记点一个免费的赞哦,你的赞将是我最大的动力。

 类似资料: