Я разрабатываю облачное приложение, чтобы немного помахать с Spring Cloud и т. Д. Теперь я застрял, пытаясь отправить запрос POST или PUT на бэкэнд Spring Data Restend с помощью API RestTemplate, но все, что я пробовал, заканчивается ошибкой: HttpMessageNotReadableException: не может десериализовать экземпляр java.lang.String из токена START_OBJECT, HttpMessageNotReadableException : Не удалось прочитать документ: не удается десериализовать экземпляр java.lang.String из маркера START_ARRAY, ... из запроса с типом содержимого приложения/xml; charset = UTF-8 !, Error 400 null ... вы его называете , После исследования я обнаружил, что на самом деле довольно сложно потреблять HAL JSON с RestTemplate (гиперссылка JSON уровня 3, если я правильно помню), но я хочу знать, возможно ли это.Отправлять POST и PUT через RestTemplate в Spring Data Rest Api
Я бы хотел увидеть некоторые рабочие (подробные, если это возможно) примеры RestTemplate, отправляющие POST и PUT в бэкэнд памяти данных Spring.
Редактировать: Я попробовал postForEntity, postForLocation, обмен, и это только что закончилось разными ошибками. Это некоторые фрагменты, которые я пробовал (есть больше, я просто распоряжаюсь ими).
Моя сущность:
@Entity
public class Account implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@NotNull
@NotEmpty
private String username;
@NotNull
@NotEmpty
private String authorities;
@NotNull
@NotEmpty
private String password;
//Constructor, getter and setter
Некоторые restTemplate attemps:
public Account create(Account account) {
//Doesnt work :S
MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
map.add("name", account.getName());
map.add("username", account.getUsername());
map.add("password", account.getPassword());
map.add("authorities", account.getAuthorities());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
final HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<MultiValueMap<String, String>>(map,
headers);
return restTemplate.exchange(serviceUrl + "/accounts", HttpMethod.POST, entity, Account.class).getBody();
}
//Also tried with a AccountResource which extends from ResourceSupport and doesn't work either. This one gives me a error saying it cannot deserialize Account["name"].
попытался также, как это и есть ошибка о заголовке будучи приложения/XML: RestTemplate POSTing entity with associations to Spring Data REST server
Другие из них просто повторить одна из этих ошибок.
Не забудьте поделиться своим кодом? Мы определенно будем рады помочь – Coder
Вы уверены, что сервер вернет тело при публикации? – zeroflagL
Сервер ничего не возвращает, потому что RestTemplate ломается. Это дает неверную ошибку запроса на контроллере и ошибку, которую я прокомментировал в ответе в бэкэнде Spring Data Rest. –