Остальные веб-сервисы (пост) потребляют JSON не работает - PullRequest
1 голос
/ 08 апреля 2019

Итак, я пытаюсь создать простой пост веб-сервиса, который использует json.Но я получаю ошибку RESTEASY002010: Failed to execute: javax.ws.rs.NotSupportedException: RESTEASY003065: Cannot consume content type

Мой веб-сервис:

@POST
@Produces(MediaType.APPLICATION_XML)
@Path("teste1")
@Consumes(MediaType.APPLICATION_JSON)
public Response teste1(String product) {

    String result = "Product created : " + product;
    System.out.println("resultado");
    System.out.println(result);
    return Response.ok() //200
            .entity("<erro> none </erro>")
            .header("Access-Control-Allow-Origin", "*")
            .header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT")
            .header("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With").build();

}

Я также пытался сделать:

 @Consumes("application/json")

Но я получаю ту же ошибку. Я могу заставить это работать, если я делаю :

  @Consumes("*/*")

Но я не могу понять, почему это не работает, когда я говорю, что он потребляет JSON.Для тестирования веб-сервиса я использую https://apitester.com/. со следующими почтовыми данными:

{
    "key" : "value",
    "array" : [
        { "key" : 1 },
        { "key" : 2, "dictionary": {
                "a": "Apple",
                "b": "Butterfly",
                "c": "Cat",
                "d": "Dog"
            } },
        { "key" : 3 }
    ]
}

1 Ответ

0 голосов
/ 08 апреля 2019

В общем

@Consumes("application/json")

указывает тип носителя контента, который может обрабатывать веб-служба.

Но вам также может понадобиться явно указать соответствующий тип в заголовке Content-Type для вашего запроса.

Я не знаком с https://apitester.com, но, вероятно, он не отправляет заголовок Content-Type по умолчанию

В этом случае ваш сервер может обрабатывать тело запроса, например, как простой текст. Этот запрос не будет перенаправлен на конечную точку, поскольку он не предназначен для простого текста.

Установка @Consumes(*/*) устраняет эту проблему, поскольку неправильный тип носителя также соответствует этому шаблону.

Не могли бы вы убедиться, что отправили Content-Type: application/json с вашим запросом POST?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...