Использовать вызов API POST с использованием javaee-api - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь выполнить вызов POST, используя Простой Старый Java Объект, обернутый Entity.json. Я использую следующую зависимость:

<dependency>
  <groupId>javax</groupId>
  <artifactId>javaee-api</artifactId>
  <version>7.0</version>
  <scope>provided</scope>
</dependency>

Вот как работает моя функция POST:

public String testPostCall(TestParams params) {
        return target.request(MediaType.APPLICATION_JSON)
                     .accept(MediaType.APPLICATION_JSON)
                     .post(Entity.json(params), String.class);
    }

Я думаю, что проблема в Entity.json(params). Я получаю ошибку:

javax.ws.rs.ProcessingException: No message body writer has been found for class TestParams.

Вот как выглядит мой класс TestParams:

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class TestParams {

    private String message;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

Отсутствует ли зависимость для преобразования POJO? класс TestParams до JSON? Или я использую неправильные аннотации? Я хочу использовать API, который обслуживает в основном вызовы POST. Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 30 марта 2020

Я понял, как преобразовать POJO в JSON из этой ссылки , а затем использовал следующий код:

public String testPostCall(TestParams params) {
        try {
            return target.request(MediaType.APPLICATION_JSON)
                    .accept(MediaType.APPLICATION_JSON)
                    .post(Entity.json(mapper.writeValueAsString(params)), String.class);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
...