JSON本文を含むPOSTリクエストには安心して使用しています
私のPOSTリクエストコードは:-
RestAssuredResponseImpl stat=
(RestAssuredResponseImpl)given().
header("Accept", "application/json").
header("Content-Type", "application/json").
header("userid", "131987”).
queryParam("name", "Test12").
queryParam("title", "Test127123").
queryParam("contactEmail", “[email protected]").
queryParam("description", "testing purpose").
when().post("").thenReturn().getBody();
次のエラーが発生します:-
{"errors":{"error":{"code":400,"type":"HttpMessageNotReadableException","message":"Required request body content is missing: org.springframework.web.method.HandlerMethod$HandlerMethodParameter@8e9299c"}}}
親切に助けて....
サーバーがリクエスト本文を期待しているようですが、データをクエリパラメータとして送信しています。私がそれを正しく理解しているなら、あなたはあなたのデータをJSONとして送りたいと思うでしょう。これを行う最も簡単な方法は、 this アプローチを使用することです。
Map<String, Object> jsonAsMap = new HashMap<>();
map.put("name", "Test12");
map.put("title", "Test127123");
map.put("contactEmail", “[email protected]");
map.put("description", "testing purpose");
ResponseBody =
given().
accept(ContentType.JSON).
contentType(ContentType.JSON).
header("userid", "131987”).
body(jsonAsMap).
when().
post("").
thenReturn().body();
queryParamは、URLでqueryパラメーターを渡す必要がある場合に使用されます。bodyセクションでは、実際のコンテンツを送信する必要があります。
次の方法でコンテンツを送信できます。
### 1.Passing JSON data format in the body:-
given()
.accept(ContentType.JSON)
.contentType(ContentType.JSON)
.body("{\r\n" + " \"id\": 101,\r\n" +
" \"firstName\": \"john\",\r\n" + " \"lastName\": \"doe\",\r\n" +
" \"email\": \"[email protected]\",\r\n" +
" \"mobile\": \"981-232-3435\",\r\n" + " \"dateOfBirth\": 78468436\r\n"
+ "}" )
.post(URL)
.then()
.statusCode(200).log().all()
### Second Way
JSONObject json1 = new JSONObject();
json1.put("firstName","John");
json1.put("lastName","Joker");
json1.put("email","[email protected]");
json1.put("mobile","981-232-3435");
json1.put("dateOfBirth",78468436);
Response response1 =
given()
.pathParam("name", "object1")
.accept(ContentType.JSON)
.contentType(ContentType.JSON)
.body(json1.toString())
.post("https://xxx/{name}")
.then()
.statusCode(200)
.log().all();
//このコードを試してみてください。私があなたにも役立つかもしれません。
{
RestAssured.baseURI = API_URL;
RequestSpecification request = RestAssured.given();
request.header("Key1", "Value1");
request.header("Key2", ""+Value2+""); //If value is getting capture from other variable
JSONObject requestParams = new JSONObject();
requestParams.put("Payload Key1", "Payload Value1");
requestParams.put("Payload Key2", "Payload Value2");
request.body(requestParams.toString());
Response response = request.post("");
int StatusCode = response.getStatusCode();
System.out.println("Status code : " + StatusCode);
System.out.println("Response body: " + response.body().asString()); //Get Response Body
}
POST URIの完全修飾パスを確認してください。post呼び出しの本文がありません。これは必須です。ur呼び出しは次のようになります。
Response _res = requestspec.body(jsonObject).post(url);
次に、Responseで操作を実行できます。