Получение 400 неверных запросов во время POST-строки в весеннем MVC
У меня есть API отдыха, которые принимают строку в POST и возвращают объект,
это метод:
@RequestMapping(method = RequestMethod.POST, value = "/aValue", headers = "Accept=application/json")
public @ResponseBody
MyObject getMyObject(@RequestBody String string) {
MyObject response = myService.getMyObject(string);
return response;
}
теперь, когда я вызываю API из другого сервиса, например, если я делаю POST, как это, он всегда дает мне 400 Bad Request:
List<Object> providers = new ArrayList<Object>();
providers.add(jsonProvider);
WebClient client = WebClient.create(baseUrl + myAPI, providers);
client.type(MediaType.APPLICATION_JSON);
client.accept(MediaType.APPLICATION_JSON);
MyObject response = client.post(userId, MyObject.class);
return response;
вместо рабочего решения, которое я использовал, вот этот:
MyObject response = client.post("\"" + userId + "\"", MyObject.class);
кто-нибудь может мне помочь? Спасибо, парни
1 ответ
У вас есть проблема, потому что то, что вы публикуете, не является допустимым JSON, но вы указываете, что оно есть в вашем клиентском коде. Поскольку вы, кажется, передаете просто строковое свойство userId, вы можете просто изменить свое отображение для получения простого текста, добавив consumes = "text/plain"
,
@RequestMapping(method = RequestMethod.POST, value = "/aValue", headers = "Accept=application/json", consumes = "text/plain")
public @ResponseBody
MyObject getMyObject(@RequestBody String string) {
и пусть ваш клиент отправит простой текст, так
client.type(MediaType.TEXT_PLAIN);