C# Service Restful à l'Aide de WebInvoke POST
Je suis en train d'élaborer un service Restful en C# et qui fonctionne bien lorsque j'utilise
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Xml, BodyStyle =
WebMessageBodyStyle.Wrapped, UriTemplate = "json/?id={id}")]
string jdata(string id);
et mon corrsponding implémentation de la fonction est:
public string json(string id)
{
return "You Typed : "+id;
}
Jusqu'ici tout fonctionne bien,
mais quand je change de WenInvoke method="POST" que j'ai à faire face à une "Méthode qui n'est PAS Autorisé.";
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Xml, BodyStyle =
WebMessageBodyStyle.Wrapped, UriTemplate = "json/?id={id}")]
string jdata(string id);
- Pensez-vous réellement envoyer une requête POST vers le service? ou essayez-vous d'accéder à "une URL dans un navigateur'? (WebBrowser URL = OBTENIR, la page web form = POST). Obtenez nécessite uniquement une URL Poste exige une URL + Corps
- Pourquoi ne pas simplement utiliser MVC 4 Web API
- S'il vous plaît dites-moi comment je peux utiliser la méthode Post dans WEBINVOKE. Merci
- le WebInvoke attribut est la définition de votre service web comme "Post". C'est le client qui doit assurez-vous que c'est à l'aide de la POSTE et de ne pas l'OBTENIR (c'est à dire browing à la POSTE basé Détente service de rendement d'une méthode interdite). Si vous souhaitez utiliser un navigateur pour les tests que vous aurez à faire un formulaire avec les champs du formulaire étant les paramètres et l'action de l'ensemble de la forme de votre opération de service web d'extrémité.
Vous devez vous connecter pour publier un commentaire.
Vous obtenez la "Méthode ne permet pas" parce que vous êtes atteindre les Uri "json/?id={id}" via GET au lieu de POST.
Vérifier avec votre client, vous n'avez pas mentionné comment vous appelez cette ressource). Veuillez donner plus de détails la façon dont vous essayez d'utiliser votre site web de service au client. Est est .Net client?
Pour tester votre API, je recommande d'utiliser Fiddler - quand vous pouvez spécifier explicitement si l'utilisation de GET ou POST avant d'envoyer une requête http:
L'autre chose est, vous pourriez avoir involontairement utilisé "json", comme Uri, mais défini comme ResponseFormat WebMessageFormat.Xml. N'est-il pas un peu déroutant pour le client? Peut-être que vous avez voulu retour JSON en arrière? Dans ce cas, je vous conseille d'utiliser Json dans les deux - demande et la réponse:
C'est comment votre contrat devrait ressembler et puis en client
Ci-dessus est juste quelque chose que j'utilise pour tester mes services. Espérons que cela aide.