![](/img/trans.png)
[英]How to convert Json to Java for making POST request using rest assured
[英]Internal Server Error when making POST request using Rest Assured
我嘗試使用 POJO 發出 POST 請求,但收到“vHTTP/1.1 500 內部服務器錯誤”,您能否告知原因? 當我將 body 作為字符串傳遞時,它工作正常,但傳遞 bookingDetails 會引發錯誤。 我認為 BookingDates class 有問題,但我不知道為什么。
package bookings.POST;
import bookings.BookingBaseTest;
import io.restassured.RestAssured;
import io.restassured.response.Response;
import org.junit.jupiter.api.Test;
public class CreateBooking extends BookingBaseTest {
@Test
public void createBooking(){
//Set json Data
BookingDetails bookingDetails = new BookingDetails();
bookingDetails.setFirstname("Jim");
bookingDetails.setLastname("Brown");
bookingDetails.setTotalprice(111);
bookingDetails.setDepositpaid(true);
BookingDetails.BookingDates bDates = new BookingDetails.BookingDates();
bDates.setCheckin("2018-01-01");
bDates.setCheckout("2019-01-01");
bookingDetails.setBookingDates(bDates);
bookingDetails.setAdditionalneeds("Breakfast");
Response response = RestAssured.given().
spec(requestSpec)
.body(bookingDetails)
.when()
.post();
response.then().log().all();
}
}
package bookings.POST;
/*
{
"firstname" : "Jim",
"lastname" : "Brown",
"totalprice" : 111,
"depositpaid" : true,
"bookingdates" : {
"checkin" : "2018-01-01",
"checkout" : "2019-01-01"
},
"additionalneeds" : "Breakfast"
}
*/
public class BookingDetails {
private String firstname;
private String lastname;
private int totalprice;
private boolean depositpaid;
private BookingDates bookingDates;
private String additionalneeds;
//Omit other getters and setters
public BookingDates getBookingDates() {
return bookingDates;
}
public void setBookingDates(BookingDates bookingDates) {
this.bookingDates = bookingDates;
}
static class BookingDates {
private String checkin;
private String checkout;
public String getCheckin() {
return checkin;
}
public void setCheckin(String checkin) {
this.checkin = checkin;
}
public String getCheckout() {
return checkout;
}
public void setCheckout(String checkout) {
this.checkout = checkout;
}
}
}
您應該在請求正文中傳遞 BookingDetails object 的 json 序列化正文。 您可以使用 ObjectMapper 序列化 object:
//serialize the bookingDetails object
ObjectMapper mapper = new ObjectMapper();
String bookingDetailsJson = mapper.writeValueAsString(bookingDetails);
然后在您的請求正文中傳遞它,同時將 contentType 提到為 JSON:
Response response = RestAssured.given().spec(requestSpec).contentType(JSON).body(bookingDetailsJson).when().post();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.