美文网首页js css html
Unirest的POST和GET写法,Unirest请求怎么写?

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

作者: 王月亮17 | 来源:发表于2022-09-02 07:57 被阅读0次

    之前用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)就好了。

    相关文章

      网友评论

        本文标题:Unirest的POST和GET写法,Unirest请求怎么写?

        本文链接:https://www.haomeiwen.com/subject/sghvbrtx.html