Pas de HttpMessageConverter trouvé lorsque vous tentez d'exécuter restclient demande
Je suis en train d'utiliser Spring for Android rest client
pour envoyer des données avec un http post
, pour éviter la création et l'analyse des données json.
De leur manuel ils ont la méthode suivante:
restTemplate.postForObject(url, m, String.class)
Après l'appel de la méthode, j'obtiens l'exception suivante:
No suitable HttpMessageConverter found when trying to execute restclient request
Mon activité d'un extrait de code est :
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);
Et l'objet du Message est :
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;
}
}
Pourquoi ne peut-il pas convert the Message object to JSON
?
Avez-vous ajouté un
restTemplate.getMessageConverters().add(new HttpMessageConverter<Message>()) j'ai besoin d'ajouter de cette façon?
HttpMessageConverter<Message>
?restTemplate.getMessageConverters().add(new HttpMessageConverter<Message>()) j'ai besoin d'ajouter de cette façon?
OriginalL'auteur meh | 2012-11-28
Vous devez vous connecter pour publier un commentaire.
Il pourrait y avoir différentes raisons pour lesquelles cela peut se produire. Dans mon cas, j'ai eu le RestTemplate déjà câblé, mais tout de même eu cette erreur. S'avère, j'ai dû ajouter une dépendance sur "jackson-databind":
OriginalL'auteur aazeem
Il semble que vous n'avez pas ajouté un
Message
spécifiquesHttpMessageConverter
.HttpMessageConverter
est uninterface
. Vous devez créer une classe qui implémenteHttpMessageConverter<Message>
et ajouter une instance de cette classe à laRestTemplate
viarestTemplate.getMessageConverters().add(new MyMessageConverter());
Depuis
MappingJacksonHttpMessageConverter
s'étendAbstractHttpMessageConverter<Object>
, je suppose queRestTemplate
seront utilisées uniquement explicitementObject
instances. Franchement, je ne suis pas familier avec elle. Essayez la mise en œuvre de votre propre en utilisant Jackson ou Gson explicitement et voir si cela fonctionne, alors essayez de comprendre comment utiliserMappingJacksonHttpMessageConverter
. C'est ma suggestion de toute façon.Ok je vais aller avec ça, je te donne +1 pour la réponse, la chose étrange est qu'à partir de leur manuel de référence qu'ils ont un objet simple et ils n'ont pas autre chose sans la mise en œuvre d'une autre HttpMessageConverter.
Merci de poster la solution à l'aide de
MappingJacksonHttpMessageConverter
si vous comprendre. Je serais intéressé de savoir.eh bien, j'ai trouvé quelque chose d'intéressant(je n'ai pas encore essayé). il semble que vous pouvez ajouter jsonparser JsonHttpParser parser = new JsonHttpParser(nouveau JacksonFactory()); et d'analyser le résultat à une classe. Regardez l'exemple illustré ici: androidhive.info/2012/08/... C'est le googleplaces.class semble faire exactement ce que je veux faire.
OriginalL'auteur John B
Votre code semble bien en général. C'est peut-être un problème de version. Vérifiez si vous utilisez Jackson 2, et si oui, changer le convertisseur de
MappingJackson2HttpMessageConverter
.Pas besoin de quelque chose comme
HttpMessageConverter<Message>
.Sur un côté d'un nœud:
Java convention est d'utiliser des bas de casse pour les noms de variables. Donc, il serait plus lisible pour les autres développeurs Java à faire:
OriginalL'auteur Risadinha