“ application / x-www-form-urlencoded”をサポートする最良の方法WCFでデータを投稿しますか?

StackOverflow https://stackoverflow.com/questions/604463

質問

「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);
役に立ちましたか?

解決

最良の方法は、Stream を使用することです/ "rel =" noreferrer "> WCFを使用した生のHTTP POST またはあなたが言っていること。 これは、WCFがすべての通信レベルの物理レイアウトをサービスコードから抽象化するためです。理想的には、スイッチを切り替えるだけでSOAPまたはRESTに変換できるサービスを作成することができます。

ネイティブでサポートするには、おそらく WebHttpBinding を拡張するか、独自のバインディングを作成してカスタムエンコーダー。これは、リンクされた投稿が言うように、出力に対して対称です。 WCFでXML / JSON以外のものを出力するには、腕をひねる必要があります。

他のヒント

WCF REST Contribライブラリはこの機能を有効にします:

https://github.com/mikeobrien/WcfRestContrib

これにはPOXフォーマッターとフォームURLエンコードフォーマッターが含まれており、独自のフォーマッターを簡単に作成できます。フォーマッタはMIMEタイプにマップされ、コンテンツタイプに基づいてエンティティ本体をシリアライズ/デシリアライズするために自動的に選択され、ヘッダーを受け入れます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top