Résolution de l'erreur de type de média HTTP 415 non pris en charge pour les requêtes JSON
Lors de l'émission d'une requête REST avec un corps JSON, il n'est pas rare de rencontrer une erreur HTTP 415 « Type de média non pris en charge ». Cette erreur provient généralement du serveur lorsqu'il est incapable de traiter les données JSON entrantes.
Plus précisément, le problème soulevé dans la question est caractérisé par une requête POST avec un « Content-Type : application/json » correctement défini. ", mais vous recevez toujours l'erreur "Type de média non pris en charge". Malgré l'essai de diverses bibliothèques JSON, le problème a persisté.
Solution : Omettre la spécification du jeu de caractères
Après un examen attentif, il a été découvert que l'inclusion du "charset=utf8" Le paramètre dans l'en-tête "Content-Type" était à l'origine de l'erreur. En supprimant "charset=utf8" de l'en-tête de la requête, l'erreur disparaît miraculeusement.
Code révisé :
<code class="java">con.setRequestProperty("Content-Type", "application/json"); con.setRequestProperty("Accept", "application/json");</code>
Explication technique :
Il semble que l'omission du paramètre "charset=utf8" permette au serveur de automatiquement détecter l'encodage des données JSON entrantes. C'est souvent l'approche privilégiée, car l'encodage doit être transparent pour la couche application et géré par des mécanismes de communication sous-jacents.
Conclusion :
Dans certains scénarios, il est Il est possible de résoudre l'erreur HTTP 415 « Type de média non pris en charge » pour les requêtes JSON en éliminant la spécification du jeu de caractères de l'en-tête « Content-Type ». Cette simple modification permet au serveur de traiter de manière transparente les données JSON entrantes, conduisant ainsi à des interactions réussies avec le service REST.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!