Dans mon application Ruby on Rails, j'ai essayé de télécharger une image via le client POSTMAN REST au format Base64 . Lorsque JE POSTE l'image, j'obtiens une réponse 406 Not Acceptable . Lorsque j'ai vérifié ma base de données, l'image était là et a été enregistrée avec succès.
Quelle est la raison de cette erreur, dois-je spécifier quelque chose dans mon en-tête?
Ma demande:
URL --- http://localhost:3000/exercises.json
Entête:
Content-Type - application/json
Données brutes:
{
"exercise": {
"subbodypart_ids": [
"1",
"2"
],
"name": "Exercise14"
},
"image_file_name": "Pressurebar Above.jpg",
"image":"******base64 Format*******"
}
Réponses:
Votre opération n'a pas échoué.
Votre service backend indique que le type de réponse qu'il renvoie n'est pas fourni dans l' acceptation en-tête HTTP de votre demande Client.
Réf: http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
http://en.wikipedia.org/wiki/HTTP_status_code -> 406
la source
406 se produit lorsque le serveur ne peut pas répondre avec l'en-tête d'acceptation spécifié dans la demande. Dans votre cas, il semble que l'application / json pour la réponse ne soit pas acceptable pour le serveur.
la source
Vous avez mentionné que vous utilisiez Ruby on Rails comme backend. Vous n'avez pas publié le code de la méthode pertinente, mais je suppose que cela ressemble à ceci:
Changez-le en:
Et cela résoudra votre problème. Cela a fonctionné pour moi :)
la source
Vous pouvez également recevoir une réponse 406 lorsque des cookies non valides sont stockés ou référencés dans le navigateur - par exemple, lors de l'exécution locale d'un serveur Rails en mode Dev.
Si vous exécutez deux projets différents sur le même port, le navigateur peut référencer un cookie d'une session d'hôte local différente.
Cela m'est arrivé ... m'a fait trébucher pendant une minute. La recherche dans le navigateur> Mode développeur> Réseau l'a montré.
la source
"Parfois", cela peut signifier que le serveur a eu une erreur interne et a voulu répondre avec un message d'erreur (ex: 500 avec la charge utile JSON), mais comme les en-têtes de la requête n'indiquaient pas qu'il acceptait JSON, il renvoie un 406 à la place. Allez comprendre. (dans ce cas: spring boot webapp).
Dans ce cas, votre opération a échoué. Mais le message d'échec a été obscurci par un autre.
la source
Dans mon cas, j'ai ajouté:
résolu mon problème complètement.
la source
la source
Si vous utilisez 'request.js', vous pouvez utiliser ce qui suit:
la source
Dans mon cas pour une API en .NET-Core, l'API est configurée pour fonctionner avec XML (par défaut, elle est définie sur response with JSON), j'ajoute donc cette annotation dans mon Controller:
Merci de m'avoir mis sur le chemin!
la source