0
我在做一个需要通过客户端接收复杂数据的WCF REST服务。我知道我不能通过GET方法传递复杂的数据,所以我使用POST来发送它。将复杂数据传递给REST WCF 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'参数的服务方法始终为空,我错过了什么或者我做错了什么?
在此先感谢...
Pe可能是因为当你将这个序列化到JSON然后将它粘贴到你的请求流中时,你实际上并没有传递一个项目,只是一个匿名JSON对象。试着包装它: itemToSend =“{item:”+ JsonConvert.SerializeObject )+ “}”; 虽然我可能完全错了:() –
这些是否都使用InItem的相同版本的库? –
也是InItem标有Serializable属性? –