我正在尝试将JSON发布到WCF服务。json对象包含一个数组。我想知道如何正确绑定到我的数据合同。如果有人可以在这里给我指点,我将不胜感激。目前,我的购物车对象为null
我的服务界面如下所示:
public interface IService { [OperationContract] [WebInvoke(UriTemplate = "/cart", Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json)] Ship GetShipInfo( Cart cart, string Website); } [DataContract] public class Cart { [DataMember] public Int32 ProductID { get; set;} [DataMember] public decimal ItemPrice { get; set; } [DataMember] public Int16 Qty { get; set; } [DataMember] public String SizeWidth { get; set; } }
我的客户电话如下
客户电话
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Runtime.Serialization.Json; using System.Net; using System.IO; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { DataContractJsonSerializer obj = new DataContractJsonSerializer(typeof(string)); Cart cart = new Cart{ ProductID = 1000, ItemPrice = Convert.ToDecimal(32.50), Qty = 1, SizeWidth = “6M” }; WebClient Proxy1 = new WebClient(); Proxy1.Headers["Content-type"] = “application/json”; MemoryStream ms = new MemoryStream(); DataContractJsonSerializer serializerToUplaod = new DataContractJsonSerializer(typeof(Cart)); serializerToUplaod.WriteObject(ms, cart); byte[] data = Proxy1.UploadData(“http://localhost:54897/IphoneService.svc/cart”, “POST”, ms.ToArray()); Stream stream = new MemoryStream(data); obj = new DataContractJsonSerializer(typeof(Ship)); var Ship = obj.ReadObject(stream) as Ship; } public class Ship { public Decimal SecondDay { get; set; } public Decimal NextDay { get; set; } } public class Cart { public Int32 ProductID { get; set; } public Decimal ItemPrice { get; set; } public Int16 Qty { get; set; } public String SizeWidth { get; set; } } }
我的JSON看起来像这样
{"cart": [ {"ProductID":2957, "Qty":1, "ItemPrice":60, "SizeWidth":"5M"} ] }
Fiddler对WCF REST方法的原始请求应如下所示:
POST http://localhost:54897/IphoneService.svc/cart HTTP 1.1 Content-Type: application/json Host: localhost {"cart":{"ProductId":1,"ItemPrice":60,"Qty":1,"SizeWidth":"5M"},"Website":"sample website"}
JSON中的响应如下所示:
HTTP/1.1 200 OK Content-Type: application/json Content-Length: 30 {"SecondDay":5.0, "NextDay":7.0}