Получение 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);
Другие вопросы по тегам