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

时间:2012-11-28 11:39:52

标签: java android

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

manual他们有以下方法:

restTemplate.postForObject(url, m, String.class)

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

No suitable HttpMessageConverter found when trying to execute restclient request

我的活动代码段是:

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);

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;
    }
}

为什么不能convert the Message object to JSON

3 个答案:

答案 0 :(得分:7)

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

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>

答案 1 :(得分:6)

您好像没有添加Message特定的HttpMessageConverterHttpMessageConverterinterface。您需要创建一个实现HttpMessageConverter<Message>的类,并通过RestTemplate

将该类的实例添加到restTemplate.getMessageConverters().add(new MyMessageConverter());

答案 2 :(得分:1)

您的代码一般看起来很好。也许这是一个版本问题。检查您是否使用Jackson 2,如果是,请将转换器更改为MappingJackson2HttpMessageConverter

不需要HttpMessageConverter<Message>

在侧节点上: Java约定是使用较低的外壳作为变量名。因此,对其他Java开发人员来说,它更具可读性:

private String library;

public void setLibrary(String library) {
    this.library = library;
}