2009-03-02 10 views
8

"application/x-www-form-urlencoded"ポストデータを受け入れるRESTful Webサービスエンドポイントを定義するW3C仕様に基づいてWCFサービスを構築しています。 WCFは、デフォルトではメッセージのエンコードのこのタイプをサポートしていないと私はこのようになります契約の作成の異なる例の数を発見した:HttpUtility.ParseQueryStringメソッドを使用してpostDataストリームを復号化する実装内WCFでの "application/x-www-form-urlencoded"投稿データをサポートする最適な方法は?

XElement Query_Post(Stream postData); 

そしてを。

WCFで「application/x-www-form-urlencoded」をサポートする、より強く型付けされた方法を知っている人はいますか?

私は私の運転契約がなりたい:

XElement Query_Post(string query, string [] params); 
+3

24時間後に誰もそのような基本的なことをする方法を知らないという事実は、WCFが安らかなものを構築するのに最適なプラットフォームではないことを示すはずです。 OpenRastaを試してみてください.x-www-form-urlencodedデータを扱うためにコーデックが組み込まれていると思います。 –

答えて

7

最良の方法はRaw HTTP POST with WCFか何を言っているようStreamを使用することです。 これは、WCFがすべての通信レベルの物理レイアウトをサービスコードから抽象化するためです。理想的には、スイッチを反転させるだけでSOAPまたはRESTに変わる可能性のあるサービスを作成したいと考えています。

ネイティブにサポートするには、WebHttpBindingを拡張するか、独自のバインディングを作成してcustom encoderを実装する必要があります。これはリンクされたポストのように出力と対称的です。 WCFに非XML/JSONのものを出力させるには、その腕をねじる必要があります。

+0

デッドリンクの例はありますか? –

2

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

https://github.com/mikeobrien/WcfRestContrib

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

+0

URLが壊れているためダウンしました... – ewitkows

+0

その答えは6歳のチーフです。 – hcoverlambda

+0

それはもう何の助けも提供しません – ewitkows

関連する問題