web-dev-qa-db-ja.com

POSTリクエストは安心です

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();
5
Johan

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();
0
Shivani

//このコードを試してみてください。私があなたにも役立つかもしれません。

    {
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
}
0
AnkitSingh

POST URIの完全修飾パスを確認してください。post呼び出しの本文がありません。これは必須です。ur呼び出しは次のようになります。

Response _res = requestspec.body(jsonObject).post(url);

次に、Responseで操作を実行できます。