Beste Weg, um support "application/x-www-form-urlencoded" post-Daten mit WCF?
Baue ich einen WCF-Dienst basiert auf einer W3C-Spezifikation definiert einen RESTful-web-service Endpunkt, der akzeptiert "application/x-www-form-urlencoded" post-Daten. WCF unterstützt diese Art der Nachricht kodiert und ich habe festgestellt, eine Reihe verschiedener Beispiele für das erstellen eines Vertrages, der wie folgt aussieht:
XElement Query_Post(Stream postData);
Und dann im Rahmen der Umsetzung der Entschlüsselung des postData
- stream über die HttpUtility.ParseQueryString
Methode.
Kennt jemand eine stärker typisierte Weise zu unterstützen "application/x-www-form-urlencoded" in WCF?
Möchte ich meinen Betrieb Vertrag:
XElement Query_Post(string query, string [] params);
- Die Tatsache, dass 24 Stunden später, niemand weiß, wie zu tun, was sollte so ein basic denken sollte zeigen, WCF ist nicht die beste Plattform zum erstellen von restful-Zeug. Versuchen OpenRasta, ich glaube, es hat ein codec-gebaut in Handgriff x-www-form-urlencoded Daten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die besten
Stream
wie Raw HTTP-POST mit WCF oder das, was Sie sagen.Der Grund ist, weil die WCF abstrahiert die Kommunikation-Ebene physikalische layout Sachen aus der service-code. Im Idealfall würden Sie wollen, um einen Dienst, der konnte wiederum in SOAP-oder REST-nur durch umlegen des Schalters.
Unterstützen es nativ, werden Sie wahrscheinlich haben, um verlängern
WebHttpBinding
oder machen Sie Ihre eigenen Bindung und Umsetzung benutzerdefinierte encoder. Dieser ist symmetrisch zum Ausgang wie der verlinkte post sagt. Sie verdrehen seine Arme um WCF-Ausgang nicht-XML - /JSON-Zeug.Den WCF REST-Contrib-Bibliothek ermöglicht diese Funktionalität:
https://github.com/mikeobrien/WcfRestContrib
Enthält es eine POCKEN-Formatierer und-form-url-encoded formatter und Sie können einfach erstellen Sie Ihre eigenen. Formatierer sind zugeordnet, um mime-Typen und automatisch ausgewählt, um serialisieren/Deserialisieren der entity-Körper, basierend auf dem content-type und accept-Header.