HttpWebRequest, Comment Envoyer des Données POST avec l'Application/JSON Type de Contenu?
HttpWebRequest demande = (HttpWebRequest) HttpWebRequest.Créer(url); demande.Method = "POST"; demande.ContentType = "application/x-www-form-urlencoded; charset=utf-8";
Publier des données a été envoyer (j'ai vérifier à l'aide de Fiddler) retourné à partir de Yahoo :
{"error":{"code":-1003,"détail":"Contenu non pris en charge Type d'Erreur","description":"Contenu non pris en charge Type d'Erreur"},"code":-1003}
Je suis en train d'écrire Yahoo Messanger client qui nécessitent application/json; charset=utf-8 en tant que type de contenu, et lorsque j'ai mis :
demande.ContentType = "application/json; charset=utf-8";
Pas de données POST envoyer, retourné à partir de Yahoo :
{"error":{"code":-1005,"détail":"Argument non Valide Erreur","description":"Argument non Valide Erreur"},"code":-1005}
Mise à JOUR
J'ai été essayer d'envoyer ces 2 valeurs à l'aide de la méthode POST : presenceState & statut.
Comme indiqué dans Yahoo Messager IM API pris en charge content-type sont application/json.
Et dans mon code, si j'ai mis content-type à application/json, HttpWebRequest de ne pas envoyer ces 2 valeurs par la POSTE.
À l'aide de Fiddler, de mon premier code yahoo serveur retourne ce résultat JSON : {"error":{"code":-1003,"détail":"Contenu non pris en charge Type d'Erreur","description":"Contenu non pris en charge Type d'Erreur"},"code":-1003}. Et le code de réponse de 400 (Bad Request).
OriginalL'auteur F8R | 2011-06-12
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil sur l'exemple suivant
Où CreateData est
OriginalL'auteur GSerjo
Basé sur votre erreur, la première est en cause que le type de contenu de la demande ne correspond pas à celle de ce que Yahoo est attend. Cela a un sens, et votre deuxième exemple est d'aller vers le droit chemin, mais en fonction de votre annonce, il semble que vous êtes l'obtention d'une réponse. Avec un violon, vous devriez être en mesure de comparer votre annonce avec une bonne demande par l'intermédiaire du site. Qui pourrait vous aider à identifier où il va mal.
Mais peu importe, nous aurons besoin de voir un peu plus de ce que vous faites comme il n'y a rien à montrer le contenu de votre post pour nous de passer en revue.
OriginalL'auteur Mitchel Sellers
j'ai été aux prises avec exactement le même problème.
comme indiqué dans la documentation (http://developer.yahoo.com/messenger/guide/ch01s04.html), vous devez disposer d'un corps est vide ({}) dans la requête POST.
à l'aide de javascript & jQuery, j'ai envoyé un simple objet vide chaîne dans le POST du corps, et qui fonctionne:
espère que ça aide.
OriginalL'auteur Eitan Rousso
Je suis super en retard à la fête, mais je me suis retrouvé ici à essayer de comprendre ce que j'étais bien, peut-être que cela va aider quelqu'un d'autre.
Si dans votre code c# vous définissez votre type de contenu, puis ajouter quelques autres en-têtes-- quelque chose comme ceci:
ce qui se passe réellement, c'est que lorsque vous écrivez .ContentType, sous le capot, c'est le réglage de Type de Contenu dans votre demande de WebHeaderCollection. Et puis vous aller de l'avant et de les écraser. Cela pourrait arriver à n'importe quel en-tête, vous définissez comme ça avant d'ajouter un tas de formats personnalisés. Si c'est ce que vous faites, il suffit de définir les en-têtes personnalisés d'abord, puis d'écrire à l' .Selon les en-têtes.
OriginalL'auteur NathanTempelman
Mon erreur est peut-être le même que votre erreur. Le problème est résolu par le changement de type de
presenceState
de type int pas de type chaîne de caractères.J'espère que vous résoudre ce problème.
OriginalL'auteur danh pham