我正在尝试使用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?
为什么会发生这种情况可能有几个不同的原因.在我的情况下,我已经连接了RestTemplate,但仍然遇到此错误.事实证明,我必须添加对"jackson-databind"的依赖:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
看起来你没有添加Message特定的HttpMessageConverter.HttpMessageConverter是一个interface.您需要创建一个实现HttpMessageConverter<Message>并将该类的实例添加到RestTemplatevia的类restTemplate.getMessageConverters().add(new MyMessageConverter());