尝试执行restclient请求时找不到合适的HttpMessageConverter

meh*_*meh 9 java android

我正在尝试使用a Spring for Android rest client发送数据http post,以避免创建和解析json数据.

从他们的手册中,他们有以下方法:

restTemplate.postForObject(url, m, String.class)
Run Code Online (Sandbox Code Playgroud)

调用该方法后,我得到以下异常:

No suitable HttpMessageConverter found when trying to execute restclient request
Run Code Online (Sandbox Code Playgroud)

我的活动代码段是:

RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJacksonHttpMessageConverter());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
Message m = new Message();
m.setLibrary("1");
m.setPassword("1395");
m.setUserName("1395");
String result = restTemplate.postForObject(url, m, String.class);
Run Code Online (Sandbox Code Playgroud)

而Message对象是:

public class Message {
    private String UserName, Password, Library;

    public String getUserName() {
        return UserName;
    }

    public void setUserName(String userName) {
        UserName = userName;
    }

    public String getPassword() {
        return Password;
    }

    public void setPassword(String password) {
        Password = password;
    }

    public String getLibrary() {
        return Library;
    }

    public void setLibrary(String library) {
        Library = library;
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么不能呢convert the Message object to JSON

aaz*_*eem 7

为什么会发生这种情况可能有几个不同的原因.在我的情况下,我已经连接了RestTemplate,但仍然遇到此错误.事实证明,我必须添加对"jackson-databind"的依赖:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)


Joh*_*n B 6

看起来你没有添加Message特定的HttpMessageConverter.HttpMessageConverter是一个interface.您需要创建一个实现HttpMessageConverter<Message>并将该类的实例添加到RestTemplatevia的类restTemplate.getMessageConverters().add(new MyMessageConverter());