2

私の場合、私は以下のようなWebサービスを持っています。

    [OperationContract]
    [WebInvoke(UriTemplate = "services/CreatePerson", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, Method = "POST")]
    string CreatePerson(string data);

JSON入力を期待しています。以下のようにリクエスト本文としてJSON文字列を渡すことにより、Fiddlerでこのサービスをテストしている間、

"{"personName":"Joe", "source":"I", "address":"KK Road"}"

およびリクエストヘッダーとして

User-Agent: Fiddler
Content-Type: application/json;charset=utf-8
Host: localhost
Content-Length: 54

デバッグ中にサービスメソッドのブレークポイントに到達しません。

同時に、以下のJSONで機能します(二重引用符を前のjsonの単一引用符に置き換えます)。

"{'personName':'102',  'source':'I',  'address':'KK Road'}"

「テスト」として入力を渡すとうまく機能するため、JSON文字列入力を受け取らないサービスメソッド。

実際の問題はどこにありますか、私が見つけるのを手伝ってください....

4

1 に答える 1

1

最初と最後の引用符を使用するべきではないと思います!

試す:

{'personName':'102',  'source':'I',  'address':'KK Road'}

また、メソッドは文字列引数ではなく、jsonに準拠するクラスを取る必要があります。

 public class M
 {
     public string personName { get; set; }
     public string source { get; set; }
     public string address { get; set; }
 }

 [OperationContract]
 [WebInvoke(UriTemplate = "services/CreatePerson", RequestFormat = WebMessageFormat.Json, 
    ResponseFormat = WebMessageFormat.Json, Method = "POST")]
 string CreatePerson(M data);
于 2013-01-24T05:08:55.240 に答える