“ application / x-www-form-urlencoded”をサポートする最良の方法WCFでデータを投稿しますか?
-
03-07-2019 - |
質問
「application / x-www-form-urlencoded」を受け入れるRESTful Webサービスエンドポイントを定義するW3C仕様に基づいてWCFサービスを構築しています。投稿データ。 WCFはデフォルトではこのタイプのメッセージエンコーディングをサポートしていません。次のようなコントラクトを作成するさまざまな例を見つけました。
XElement Query_Post(Stream postData);
そして、実装内で HttpUtility.ParseQueryString
メソッドを使用して postData
ストリームをデコードします。
「application / x-www-form-urlencoded」をサポートする、より強く型付けされた方法を知っている人はいますか? WCFの場合
運用契約をしたい:
XElement Query_Post(string query, string [] params);
解決
最良の方法は、
ネイティブでサポートするには、おそらく WebHttpBinding
を拡張するか、独自のバインディングを作成してカスタムエンコーダー。これは、リンクされた投稿が言うように、出力に対して対称です。 WCFでXML / JSON以外のものを出力するには、腕をひねる必要があります。
他のヒント
WCF REST Contribライブラリはこの機能を有効にします:
https://github.com/mikeobrien/WcfRestContrib
これにはPOXフォーマッターとフォームURLエンコードフォーマッターが含まれており、独自のフォーマッターを簡単に作成できます。フォーマッタはMIMEタイプにマップされ、コンテンツタイプに基づいてエンティティ本体をシリアライズ/デシリアライズするために自動的に選択され、ヘッダーを受け入れます。