클라이언트를 통해 복잡한 데이터를 받아야하는 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);
...이 같은 방법 정의가 그리고 닷넷 콘솔 클라이언트와 같이 소비하기 위해 노력하고있어 ...
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입니다. 내가 놓친 것이 있습니까? 아니면 내가 뭘 잘못하고 있습니까? 사전에
감사합니다 ...
귀하의 답변
Pe rhaps이 JSON 직렬화하고 다음 요청 스트림에 스틱, 실제로 항목을 그냥 익명 JSON 개체를 전달하는 아니에요. 랩 래핑하기 때문에 : itemToSend = "{item :"+ JsonConvert.SerializeObject (item) + "}"; 나는 완전히 틀릴 수 있었다 :() –
이들은 모두 InItem을위한 동일한 버전의 라이브러리를 사용하고 있습니까? –
Serializable 특성으로 표시된 InItem도 있습니까? –