首页 > 解决方案 > 使用 REST Assured 进行 Web 服务测试:在 POST 请求中使用参数时收到失败响应

问题描述

使用带参数的发布请求时出现以下错误:

{
    "failure":{
        "failureCode":"1035",
        "failureDetails":"Id: null format is not valid",
        "failureInstance":null,
        "failureMessage":"Malformed ID(s) detected.",
        "failureMessageParameter":null
    }
}

以下是我的代码:

LoadProperties lp = new LoadProperties();
    @BeforeTest
    public void beforeTest(){
        lp.load();
        RestAssured.keyStore(lp.getProperty("certificatePath"),lp.getProperty("certificatePassword"));
        RestAssured.trustStore(lp.getProperty("cacertsPath"), lp.getProperty("cacertsPassword"));
    }
    @Test
    public void test(){
        RestAssured.baseURI = lp.getProperty("baseURL");
        RequestSpecification request = RestAssured.given().header("Authorization", lp.getProperty("AccessToken"));
        request.header("Content-Type","application/json");
        JSONObject json  = new JSONObject();
        try{//**Here I add parameters to json object**
            json.put("", lp.getProperty(""));
            json.put("", lp.getProperty(""));
            json.put("", lp.getProperty(""));
            json.put("", lp.getProperty(""));
            json.put("", lp.getProperty(""));
            json.put("", lp.getProperty(""));
            json.put("", lp.getProperty(""));
        }catch(Exception e){
            e.printStackTrace();
        }
        request.body(json.toString());
        Response response = request.post(lp.getProperty("URL"));
        String statusCode = String.valueOf(response.statusCode());
        System.out.println(response.body().asString());
        Assert.assertEquals(statusCode, "200");
    }

但是,如果我使用硬编码数据(String sData =“{Parameters}”)传递给请求正文,我会得到所需的结果,但在使用 json 对象时不会。我也尝试过使用 GSON 将 json 对象转换为 jsonString 但仍然与上面的响应相同。

请帮忙。谢谢。

标签: restrest-assured

解决方案


推荐阅读