WCF(azure cloud)サービスで、JSONをサポートしたいと思います。すべてが機能するかどうかを確認するために、いくつかのテストメソッドを作成しています。GET呼び出しを機能させることはできますが、単純なパラメーターを使用してPOSTを実行すると、常に次のようになります。
The remote server returned an error: (400) Bad Request.
パラメータを送信しない場合、メソッドは実行されますが、もちろんパラメータとしてnull値が使用されます。JSONとWebMessageBodyStyleのさまざまな形式を試しましたが、どれも機能していないようです。
パラメータタイプをストリームに変更すると、データを受信しますが、手動で逆シリアル化する必要があります。これは必要ないはずですよね?
インターフェース:
[OperationContract]
[WebInvoke(UriTemplate = "Test",
Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
string Test(string data);
実装:
public string Test(string data)
{
return "result is " + data;
}
テストクライアント:
WebClient client = new WebClient();
client.Headers["Content-type"] = "application/json";
client.Encoding = System.Text.Encoding.UTF8;
string jsonInput = "{'data':'testvalue'}";
string postResponse = client.UploadString(postUrl, jsonInput);
Console.WriteLine("post response: " + postResponse);
黄金の組み合わせは、WebMessageBodyStyle.WrappedRequestと組み合わせたJSONコードで二重引用符を使用することでした。
動作するJSON:
string jsonInput = "{\"data\":\"testvalue\"}";
WebMessageBodyStyleをBareに設定すると、次のJSONが機能します。
string jsonInput = "\"testvalue\"";
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加