クライアントを介して複雑なデータを受信する必要がある WCF REST サービスを実行しています。複雑なデータを GET メソッドで渡すことができないことはわかっているので、送信するために POST を使用しています。
私はこのようなメソッド定義を持っています...
[WebInvoke (UriTemplate="/test/item", Method="POST",
RequestFormat=WebMessageFormat.Json,
ResponseFormat=WebMessageFormat.Json,
BodyStyle=WebMessageBodyStyle.Wrapped)]
[OperationContract]
string TestMethod(InItem item);
そして、私は.Netコンソールクライアントでこのように消費しようとしています...
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://myIP:port/test/item");
request.Credentials = CredentialCache.DefaultCredentials;
request.Method = "POST";
InItem item = new InItem()
{
Quantity = 2,
BougthQuantity = 2,
Code = "9998",
Date = DataTime.Now
};
string itemToSend = JsonConvert.SerializeObject(item);
byte[] byteData = Encoding.UTF8.GetBytes(itemToSend);
request.ContentLength = byteData.Length;
request.ContentType = "application/json;";
Stream stream = request.GetRequestStream();
stream.Write(byteData, 0, byteData.Length);
stream.Close();
WebResponse response = request.GetResponse();
stream = response.GetResponseStream();
しかし、サービス メソッドを呼び出すと、TestMethod の 'item' パラメータは常に null になります。
前もって感謝します...