簡體   English   中英

Rest API測試org.springframework.http.converter.HttpMessageNotReadableException

[英]Rest API Testing org.springframework.http.converter.HttpMessageNotReadableException

我正在嘗試測試兩個Rest API端點,一個是get,另一個是post。 這個想法是,由get響應返回的響應主體應為發布的主體。

我正在使用的代碼:

RestAssured.baseURI = ROOT_URI;
RequestSpecification httpRequest = 
RestAssured.given().header("Authorization", "Basic " + encodedString);
String endPoint="/v1/getworkers";
Response response = httpRequest.request(Method.GET, endPoint);
String responseBody = response.getBody().asString();

現在我得到的響應主體是:

{"workerDetails":
    [
    {"workerId":"TEST123456",
    "securityId":"TESTWORKERID",
    "workerStatus":"Active",
    "firstName":"Test",
    "lastName":"Userone"}
    ]
}

現在,我執行發布請求,並將String responseBody放在正文中:

RestAssured.baseURI = ROOT_URI;
String endpoint="/v1/PostWorkers";
RequestSpecification httpRequest = 
RestAssured.given().header("Authorization", "Basic " + encodedString)
            .header("Content-Type", "application/json").body(postbody);
Response response = httpRequest.request(Method.POST,endpoint);
String responseBody = response.getBody().asString();

我收到錯誤400:

timestamp“:1552670194453,” status“:400,” error“:” Bad Request“,” exception“:” org.springframework.http.converter.HttpMessageNotReadableException“,” message“:” JSON解析錯誤:無法反序列化以下實例START_OBJECT令牌中沒有java.util.ArrayList; 嵌套的異常是com.fasterxml.jackson.databind.JsonMappingException:無法從START_OBJECT令牌中反序列化java.util.ArrayList的實例\\ n,位於[來源:java.io.PushbackInputStream@56bba771

該怎么辦 ?

根據錯誤日志的問題是:

JSON解析錯誤:無法從START_OBJECT令牌中反序列化java.util.ArrayList實例

這意味着API期望將ArrayList作為輸入,但是將Object作為輸入。 換句話說,它會被期待着與輸入ArrayList<WorkerDetail>但要傳遞對象的輸入WorkerDetails ,它包含一個字段workerDetails類型ArrayList<WorkerDetail>

請嘗試從以下位置修改get請求的響應:

String responseBody = response.getBody().asString();

至:

List responseBody = response.jsonPath().getList("workerDetails");

然后將這個responseBody傳遞給POST請求的body()方法。

暫無
暫無

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

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