我有WCF方法
[OperationContract]
[WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped)]
string PostNewOrder(string OrderData);
这是我发布的json字符串
{
"customerId": " ",
"langCode": "SE",
"timeZone": "38",
"orderNumber": "1122519",
"orderDate": "2016-04-13 15:56:36",
"deliveryNumber": "625615",
"devices": "000000001050840;",
"transactionId": "24",
"shipDate": "2016-04-13 16:41:31"
}
但是我在WCF方法中将OrderData作为null
如果我发布字符串
"{\"customerId\":\" \",\"langCode\":\"SE\",\"timeZone\":\"38\",\"orderNumber\":\"1122519\",\"orderDate\":\"2016-04-13 15:56:36\",\"deliveryNumber\":\"625615\",\"devices\":\"000000001050840;\",\"transactionId\":\"24\",\"shipDate\":\"2016-04-13 16:41:31\"}"
它工作正常,但这不是一个合适的json,在此先感谢..
答案 0 :(得分:1)
你的合同应该类似于 -
[OperationContract]
[WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json ,
UriTemplate="/post")]
string PostNewOrder(RootObject OrderData);
RootObject
应该是什么样的 -
public class RootObject
{
public string customerId { get; set; }
public string langCode { get; set; }
public string timeZone { get; set; }
public string orderNumber { get; set; }
public string orderDate { get; set; }
public string deliveryNumber { get; set; }
public string devices { get; set; }
public string transactionId { get; set; }
public string shipDate { get; set; }
}
您发布的是json
对象表示而不是字符串,WCF运行时应该将内容反序列化为服务器上等效的强类型对象。
答案 1 :(得分:0)
我认为您需要从OperationContract
中删除RequestFormat和ResponseFormat答案 2 :(得分:0)
这是一个古老的问题,但是如果有人需要答案:
您需要将json字符串包装在注释字符串中。
我使用的是角度-因此,在我的情况下,我这样做了:
let doc = new FileData();
...
let jsonObj = JSON.stringify(doc); //json object string
let strObj = JSON.stringify(jsonObj); //json object string wrapped with string