3

次の post メソッドを使用して WCF サービスを開発しました。

[OperationContract]
[WebInvoke(Method = "POST",
    ResponseFormat = WebMessageFormat.Json,
    BodyStyle = WebMessageBodyStyle.Wrapped,
    UriTemplate = "/InsertBearingData")]
bool InsertBearingData(String JSONString);

Fiddler を使用してこのメ​​ソッドの HTTP POST リクエストを作成していますが、Status Code - 400 Bad Request. これは策定された要求です。

リクエストヘッダー:

Host: localhost:21468
Content-Length: 96
Content-Type: application/json

リクエスト本文:

[{"start time":"29-03-2013 11:20:11.340","direction":"SW","end time":"29-03-2013 11:20:14.770"}]

成功する応答を得るために、適切な要求を作成する方法を教えてください。

4

1 に答える 1

3

コードにはいくつかの問題があります。

  • パラメータのデータ型は文字列ですが、JSON 配列を渡しています。文字列パラメーターには、JSON 文字列を渡す必要があります。
  • 操作の本体スタイルは に設定されています。これは、パラメーターを、キーがパラメーター名であるオブジェクトにラップWrappedする必要があることを意味します。{"JSONString":<the actual parameter value>}

送信しているようなリクエストを受け取るには、次のような操作が必要です。

[ServiceContract]
public interface ITest
{
    [WebInvoke(Method = "POST",
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Bare,
        UriTemplate = "/InsertBearingData")]
    bool InsertBearingData(MyType[] param);
}

[DataContract]
public class MyType
{
    [DataMember(Name = "start time")]
    public string StartTime { get; set; }
    [DataMember(Name = "end time")]
    public string EndTime { get; set; }
    [DataMember(Name = "direction")]
    public string Direction { get; set; }
}
于 2013-03-29T15:10:41.200 に答える