9

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

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

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

消息对象是:

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

4

3 回答 3

7

发生这种情况可能有几个不同的原因。就我而言,我已经连接了 RestTemplate,但仍然出现此错误。事实证明,我不得不添加对“jackson-databind”的依赖:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>
于 2016-03-24T20:31:52.570 回答
6

看起来您还没有添加Message-specific HttpMessageConverterHttpMessageConverter是一个interface。您需要创建一个实现该类HttpMessageConverter<Message>的实例并将该类的实例添加到RestTemplate通过的类restTemplate.getMessageConverters().add(new MyMessageConverter());

于 2012-11-28T11:57:55.190 回答
1

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

不需要像HttpMessageConverter<Message>.

在一个侧节点上:Java 约定是使用小写的变量名。因此,对于其他 Java 开发人员来说,这样做会更具可读性:

private String library;

public void setLibrary(String library) {
    this.library = library;
}
于 2013-10-09T15:49:53.637 回答