2009-05-13 17 views
1

私は数時間前から壁に頭を打っていました。ここでは、私たちがやろうとしていることがあります。メソッドは、要求本体としてプリミティブ/シンプルタイプを想定しています。もともとはブール値で試してみましたが、うまくいかなかったので文字列とオブジェクトで試しました。同じこと。ここで プリミティブ型をWCF RESTfulサービスに渡す

は、サーバー側のコード

[OperationContract] 
[WebInvoke(UriTemplate = "/foo/{foo_id}/bar", Method = "POST", ResponseFormat=WebMessageFormat.JSON)] 
string G(string foo_id, string content); 

だし、ここにフィドラーでの要求です:

ヘッダー:

User-Agent: Fiddler 
Host: localhost 
Content-Type: 'application/json', 
Content-Length: 19 

ボディ:

"hello_world" 

私たちは、ラップしてみました{"content": "hello_world"}のように、jsonオブジェクトのは運がありません。

どのような考えですか?

+0

動作に言及するのを忘れました:メソッドにブレークポイントを置くと、ヒットしません。代わりに、私はちょうどフィドラーに戻ってくる400のエラーを取得します。 – Oli

答えて

2

私の作品罰金は、ここに私のコードは次のとおりです。

[OperationContract] 
[WebInvoke(UriTemplate = "/foo/{foo_id}/bar", Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] 
public string G(string foo_id, string content) 
{ 
    return content + foo_id; 
} 

あなたが要求フォーマット(私が知っている痛みを:))を設定していなかった

ここに私のフィドラー要求です:

User-Agent: Fiddler 
Content-Type: application/json 
Host: localhost:54287 
Content-Length: 7 
"Hello" 
+0

リクエストのフォーマットがコンテンツ/タイプに基づいて動的に選択されたと思いましたか? – Oli

+0

いいえ、それはHTTPが行うべきことであり、WCF RESTにはない多くの機能の1つです。 – SerialSeb

関連する問題