簡體   English   中英

如何使用Rest-Assured請求POST API發送令牌和主體值?

[英]How to request a POST API send token and body values using Rest-Assured?

我正在嘗試使用Rest-Assured和Java為POST API創建測試自動化。 該POST API的主體為Application / JSON,如下所示:

{
    "customer":{
        "email": "teste@mailinator.com"
    },
    "password":"Teste@12"
}

要發出此請求,我使用以下代碼,但是返回狀態碼“ 400”,但是我在Postman上發送了相同的信息,並且返回了“ 200”:

@And("envio as informacoes da chamada: (.*), (.*), (.*), (.*) e (.*)")
        public void enviarDados (String srtEmail, String srtSenha, String srtAmbiente, String srtAPI, String srtToken) {
HashMap<String,String> postContent = new HashMap<String,String>();
            postContent.put("email", srtEmail);
            postContent.put("password", srtSenha);
            //System.out.println("{\"customer\":" +postContent+ "}");
            given().contentType(ContentType.JSON).header("Authorization", "Bearer"+srtToken).header("Content-Type", "application/json").
            //with().body(postContent).
            with().body("{\"customer\":" +postContent+ "}").
            when().post(srtAmbiente+srtAPI).
            then().statusCode(200); 
}

“ 400”響應為:

{
"status": 400,
"message": "Malformed request",
"additional_error": ""

}

結構正確嗎? 您認為缺少什么? 謝謝!

您通過POST發送了不正確的正文。

//This line will not serialize HashMap to JSON, but call toString()
.body("{\"customer\":" +postContent+ "}")

結果,您的有效負載將如下所示:

{“客戶”:{password =密碼,customer = example @ example.com}}

這不是有效的JSON。 嘗試這個:

Map<String, String> emailContent = new HashMap<>();
emailContent.put("email", "example@example.com");
Map<String, Object> postContent = new HashMap<>();
postContent.put("customer", emailContent);
postContent.put("password", "password");
given().contentType(ContentType.JSON)
    .header("Authorization", "Bearer "+srtToken)
    .with().body(postContent)
    .when().post(srtAmbiente+srtAPI)
    .then().statusCode(200); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM