définir à la fois la HTTP Accepter et en-têtes Content-Type “application/xml” en C#
J'ai créé un web service (REST) en C#. Maintenant, je veux que quand quelqu'un l'utilise, il doit renvoyer du JSON ou XML comme par en-Tête. J'ai trouvé un très bon tutoriel ici. Je l'ai suivi mais je ne sais pas où il est dit set both the HTTP Accept and Content-Type headers to "application/xml"
, je l'appelle de cette façon http://localhost:38477/social/name
. Je peux répondre à une question si ma question n'est pas très clair pour vous
Merci
C'est mon code
[WebInvoke(UriTemplate = "{Name}", Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml)]
public MyclassData Get(string Name)
{
//Code to implement
return value;
}
Vous utilisez déjà le WebInvoke & WebGet attribut dans votre service de repos, ces deux attributs ont des propriétés pour définir RequestFormat & ResponseFormat
Merci à vous,@Misha a souligné la même chose mais sa ne fonctionne pas
Merci de copier/coller le code ici afin que nous puissions vous aider davantage
J'ai mis à jour
Merci à vous,@Misha a souligné la même chose mais sa ne fonctionne pas
Merci de copier/coller le code ici afin que nous puissions vous aider davantage
J'ai mis à jour
OriginalL'auteur user1391118 | 2012-07-08
Vous devez vous connecter pour publier un commentaire.
Quel cadre utilisez-vous (qui Ressemble à l'ancienne WCf Web Api) pour construire votre service RESTful? Je vous recommande fortement de l'aide de Microsoft nouvelle MVC4 Web API. Il est vraiment commencer à mûrir et simplifie considérablement le bâtiment services RESTful. C'est ce qui va être pris en charge dans l'avenir de la FMC de l'API Web est sur le point d'être abandonnées.
Vous suffit de retourner votre ModelClass un type de retour et il sera automatiquement sérialiser en XML ou JSON en fonction de la demande d'en-tête accept. Vous éviter d'avoir l'écriture de code en double et à votre service, vous serez en charge un large éventail de clients.
Liens
Vous pouvez obtenir MVC4 Api Web en téléchargeant simplement MVC4 2012 RC ou vous pouvez télécharger l'ensemble de Visual Studio 2012 RC.
MVC 4: http://www.asp.net/mvc/mvc4
VS 2012: http://www.microsoft.com/visualstudio/11/en-us/downloads
Pour l'original web wcf api donner un coup de cette. Examiner l'en-tête accept et de générer votre réponse en fonction de sa valeur.
Vous définissez l'en-tête accept sur ce que le client est à l'origine de la demande. Ce sera différent en fonction du type de client que vous utilisez pour envoyer la demande, mais tout http client aura un moyen d'ajouter des en-têtes.
Pour accéder aux en-têtes de réponse, vous utilisez
Ressources supplémentaires: http://dotnet.dzone.com/articles/wcf-rest-xml-json-or-both
Je respecte votre opinion,mais je ne veux pas changer mon ensemble du Service juste à cause de cette erreur.Je veux dire, je veux apprendre et de connaître la réponse à ma question,sûrement la prochaine fois que je vais utiliser MVC4..+1 pour la nouvelle Idée:)
WCF infrastructure permettra de gérer automatiquement la demande/réponse de la sérialisation/désérialisation pour corriger le format (json ou xml) basée sur les en-têtes Http. Vous n'avez pas besoin de gérer spécifiquement (avec le code), sauf si vous faites un peu plus de travail, je ne pense pas qu'est ce que la question est posée.
J'écris ceci dans ma fonction et maintenant le type de retour n'est pas les matchs.Je ne veux pas changer le type de retour...
Vous êtes très à droite..mais les choses est de savoir comment changer l'en-tête http à l'échelle du globe.asax?
OriginalL'auteur Despertar
Vous avez spécifié le
RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml
dans votreWebInvoke
attribut qui limite le format à la fois de la Demande et de la Réponse au format Xml. Supprimer la RequestFormat et ResponseFormat propriétés et laissez-le cadre de travail sur elle repose sur les en-têtes Http. Content-type en-tête spécifie le corps de la requête de type et Accepter en-tête spécifie le corps de la réponse type.Edit:
Voici comment vous pouvez envoyer vos demandes à l'aide de fiddler.
Vous pouvez utiliser Microsoft.Http et Microsoft.Http.Extensions dll qui est livré avec le RESTE starter kit pour l'écriture de code côté client. Ci-dessous est un exemple.
Les en-têtes doivent être définis dans le côté client lorsque vous envoyez vos demandes. Je vais modifier ma réponse à montrer comment vous pouvez atteindre cet objectif.
Pensez-vous que les gens vont utiliser fiddler pour voir le résultat? De plus, comment je peux voir la reponse dans un violon?
Fiddler est un excellent outil pour le débogage de services web. Personnellement, je pense que c'est l'un des doit avoir des outils pour les développeurs travaillant sur le niveau intermédiaire des composants d'une application. Pour répondre à votre question, Vous pouvez aller à l'onglet inspecteur de voir la réponse.
Qui n'a pas fonctionné
OriginalL'auteur muruge
Pouvez-vous créer deux surcharges de votre méthode comme ceci:
Ah désolé, vous avez besoin de différents paramètres dans les 2 méthodes pour travailler.
J'ai juste mis en œuvre une seule touche func,il n'y a pas de problème de paramètre je pense 🙂
OriginalL'auteur Misha