我正在尝试使用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
?
答案 0 :(得分:7)
为什么会发生这种情况可能有几个不同的原因。在我的情况下,我已经连接了RestTemplate,但仍然遇到此错误。事实证明,我不得不依赖于" jackson-databind":
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
答案 1 :(得分:6)
您好像没有添加Message
特定的HttpMessageConverter
。 HttpMessageConverter
是interface
。您需要创建一个实现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;
}