私は安心してwcfで新しいです。私は問題を見つけることができませんでした、なぜ私のwcf安らかなサービスは '悪い要求'を与える。私は.NET 4.0を使用します。JSONリクエストでfiddlerから安心してwcfサービスを呼び出す方法は?
私のサービスは次のとおりです。
[OperationContract(Name="Add")]
[WebInvoke(UriTemplate = "test/", Method = "POST",
ResponseFormat=WebMessageFormat.Json,
RequestFormat=WebMessageFormat.Json)]
public int Add(Number n1)
{
res = Convert.ToInt32(n1.Number1) + Convert.ToInt32(n1.Number2);
return res;
}
データは..です
[Serializable]
public class Number
{
public int Number1 { get; set; }
public int Number2 { get; set; }
}
私はシオマネキそのリターンから呼び出す 'HTTP/1.1 400不正な要求'
私のフィドラーリクエストヘッダーは:
User-Agent: Fiddler
Host: localhost:4217
Content-Type: application/json; charset=utf-8
と要求体である:
HTTP/1.1 400 Bad Request
Server: ASP.NET Development Server/10.0.0.0
Date: Sun, 14 Aug 2011 18:10:21 GMT
X-AspNet-Version: 4.0.30319
Content-Length: 5450
Cache-Control: private
Content-Type: text/html
Connection: Close
しかし、私はC#クライアントプログラムによって、このサービスを呼び出す場合、それはokです:
{"Number1":"7","Number2":"7"}
とレスポンスヘッダがあります。
私のクライアントコードは次のとおりです。
uri = "http://localhost:4217/Service1.svc/";
Number obj = new Number() { Number1 = 7, Number2 = 7 };
using (HttpResponseMessage response = new HttpClient().Post(uri+"test/",
HttpContentExtensions.CreateDataContract(obj)))
{
string res = response.Content.ReadAsString();
return res.ToString();
}
........
おかげで私を助けてください。
の「通常」の使用をWCF RESTは、あなたのサンプルにある ' 'ではなく、' 'の振る舞いを使用します(コード経由の場合は' WebHttpBehavior')。 の場合、デフォルトのBodyStyleは 'Bare'です。パラメータ名を持つJSONオブジェクトにオブジェクトをラップする必要はありません( のデフォルトは 'WrappedRequest'です)。 –
carlosfigueira
カルロス、説明のためにありがとう! –