#rest #rest-assured
#rest #будьте уверены
Вопрос:
Попытка отправить тело запроса с многоуровневыми данными с помощью rest-assured следующим образом.
Тело запроса:
{
"phoneNumber":1217071016,
"details":
[
{
"id":"123",
"name":"New",
"email":"hello@gmail.com"
},
{
"id":"234",
"name":"next",
"email":"next@gmail.com"
}
]
}
@Test public void generateToken() {
Map<String,String> userDetails = new HashMap<>(); userDetails.put("phoneNumber", "1217071016"); userDetails.put("details.Id", "241342"); userDetails.put("details.name", "New Name"); userDetails.put("details.email", "eclipse@test.com"); Response response = given() .contentType("application/json") .queryParam("access_token", "LL6rX8LRP7") .body(userDetails) .post("http://site/rest/try/update");
}
При отправке вышеуказанным способом, получение неверного запроса.
Как передать такого рода данные в приведенном выше коде
Комментарии:
1. Вы включили ведение журнала для запросов и ответов? Как именно они выглядят?
2. @RocketRaccoon не регистрирует запрос. Не уверен, как распечатать запрос. Можете ли вы направить меня
3. Используйте
given().log().all()
4. Тело похоже
{ "msISDN": "1217071016", "rms.rmEmail": "eclipse@test.com", "rms.rmId": "241342", "rms.rmLastName": "fjkenrfiw", "rms.rmFirstName": "New Name" }
на тело, указанное выше
Ответ №1:
Вам нужно не a Map<String, String>
, а Map<String, Object>
:
Map<String, Object> userDetails = new HashMap<>();
Map<String, Object> details = new HashMap<>();
details.put("id", "241342");
details.put("name", "New Name");
details.put("email", "eclipse@test.com");
userDetails.put("phoneNumber", "1217071016");
userDetails.put("details", Arrays.asList(details, details));
Комментарии:
1. тем не менее, тело создается неправильно. Тело:
{ "email": "eclipse@test.com", "name": "fjkenrfiw", "id": "4434353535543" }
2. кажется, вы добавляете только
details
карту в запрос, она должна бытьuserDetails
3. извините, что пропустил это. эти фигурные скобки [ ] не заполняются в теле. Если они заполняются, тогда тело должно быть правильным.
{ "phoneNumber": "1217071016", "details": { "email": "eclipse@test.com", "name": "fjkenrfiw", "id": "4434353535543" } }
Также меняется порядок тела. Есть ли способ отсортировать это.4. просто используйте Array в качестве значения, исправленного в ответе