Je n'ai trouvé aucun exemple pour résoudre mon problème, je veux donc vous demander de l'aide. Je ne peux pas simplement envoyer une requête POST à l'aide de l'objet RestTemplate dans JSON
Chaque fois que je reçois:
org.springframework.web.client.HttpClientErrorException: 415 Type de support non pris en charge
J'utilise RestTemplate de cette manière:
...
restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> list = new ArrayList<HttpMessageConverter<?>>();
list.add(new MappingJacksonHttpMessageConverter());
restTemplate.setMessageConverters(list);
...
Payment payment= new Payment("Aa4bhs");
Payment res = restTemplate.postForObject("http://localhost:8080/aurest/rest/payment", payment, Payment.class);
Quelle est ma faute?
Réponses:
Cette technique a fonctionné pour moi:
J'espère que ça aide
la source
.put()
estvoid
!postForEntity(url, entity, String.class)
œuvres à la place deput(url, entity)
J'ai rencontré ce problème lors de la tentative de débogage d'un point de terminaison REST. Voici un exemple de base utilisant la classe RestTemplate de Spring pour faire une requête POST que j'ai utilisée. Il m'a fallu un peu de temps pour reconstituer le code de différents endroits pour obtenir une version fonctionnelle.
L'analyseur JSON particulier de mon point de terminaison de repos utilisait les guillemets doubles nécessaires autour des noms de champ, c'est pourquoi j'ai échappé les guillemets doubles dans ma chaîne requestJson.
la source
J'ai utilisé le modèle de repos avec JSONObjects comme suit:
la source
Comme spécifié ici, je suppose que vous devez ajouter un
messageConverter
pourMappingJacksonHttpMessageConverter
la source
Si vous utilisez Spring 3.0, un moyen simple d'éviter l' exception org.springframework.web.client.HttpClientErrorException: 415 Unsupported Media Type , consiste à inclure les fichiers jar jackson dans votre chemin de classe et à utiliser l'
mvc:annotation-driven
élément config. Comme spécifié ici .Je m'arrachais les cheveux en essayant de comprendre pourquoi l'application mvc-ajax fonctionnait sans aucune configuration spéciale pour le
MappingJacksonHttpMessageConverter
. Si vous lisez attentivement l'article que j'ai lié ci-dessus:la source
L'erreur «415 Unsupported Media Type» vous indique que le serveur n'acceptera pas votre demande POST. Votre demande est tout à fait correcte, c'est le serveur qui est mal configuré.
MappingJacksonHttpMessageConverter
définira automatiquement l'en-tête de type de contenu de la demande surapplication/json
, et je suppose que votre serveur le rejette. Cependant, vous ne nous avez rien dit sur la configuration de votre serveur, donc je ne peux pas vraiment vous conseiller à ce sujet.la source
Je fais de cette façon et ça marche.
// Passez les en-têtes ici
J'espère que cela t'aides
la source
J'avais ce problème et j'utilise RestTemplate de Spring sur le client et Spring Web sur le serveur. Les deux API ont des rapports d'erreurs très médiocres, ce qui les rend extrêmement difficiles à développer.
Après de nombreuses heures à essayer toutes sortes d'expériences, j'ai compris que le problème était causé par la transmission d'une référence nulle pour le corps POST au lieu de la liste attendue. Je présume que RestTemplate ne peut pas déterminer le type de contenu à partir d'un objet nul, mais ne s'en plaint pas. Après avoir ajouté les en-têtes corrects, j'ai commencé à obtenir une exception côté serveur différente dans Spring avant d'entrer ma méthode de service.
Le correctif consistait à transmettre une liste vide du client au lieu de null. Aucun en-tête n'est requis car le type de contenu par défaut est utilisé pour les objets non nuls.
la source
Ce code fonctionne pour moi;
la source
Si vous ne souhaitez pas traiter la réponse
Si vous avez besoin d'une réponse pour traiter
la source
Pour moi, une erreur s'est produite avec cette configuration:
AndroidAnnotations
Spring Android RestTemplate Module
et ...GsonHttpMessageConverter
Les annotations Android ont quelques problèmes avec cette conversion pour générer
POST
requête sans paramètre. Simplement le paramètre l'anew Object()
résolu pour moi.la source
Pourquoi travailler plus dur que nécessaire?
postForEntity
accepte unMap
objet simple comme entrée. Ce qui suit fonctionne très bien pour moi lors de l'écriture de tests pour un point de terminaison REST donné dans Spring. Je pense que c'est le moyen le plus simple de faire une requête JSON POST au printemps:la source
Si vous ne souhaitez pas mapper le JSON par vous-même, vous pouvez le faire comme suit:
la source
J'ai essayé comme suit dans Spring Boot:
la source