WCF Rest服务接收对象为null

时间:2016-03-12 03:00:26

标签: c# android wcf rest

我有WCF休息服务,期望对象作为输入。

[WebInvoke(Method = "POST",
            UriTemplate = "SaveItem",
            ResponseFormat = WebMessageFormat.Json,
            RequestFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.Wrapped)]
        [OperationContract]
        public string SaveItem(Item item)
        {
            string retValue;
            using (var business = new ItemBusiness())
            {
                retValue = business.SaveItem(item).ToString();
            }

            return retValue;
        }

项目类如下所示。

 [DataContract]
    public class Item
    {
        [DataMember]
        public string UserId { get; set; }
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public string Description { get; set; }
        [DataMember]
        public string Cost { get; set; }
        //[DataMember]
        //public string AvailableQunatity { get; set; }
        [DataMember]
        public string IsNegotiable { get; set; }
        [DataMember]
        public string LocationLat { get; set; }
        [DataMember]
        public string LocationLong { get; set; }
        [DataMember]
        public string Condition { get; set; }
        [DataMember]
        public string DeliveryType { get; set; }

        [DataMember]
        public string PostalCode { get; set; }

        [DataMember]
        public string Category { get; set; }

    }

我从android应用程序传递json。

{"用户ID":" 1""名称":" 1""说明":& #34; 1""成本":" 1"" IsNegotiable":" 1"" LocationLat&# 34;:" 1"" LocationLong":" 1""条件":" 1"&# 34; DeliveryType":" 1""邮编":" 1""分类":" 13&#34 ;}

但是WCF方法将Item设为null而不确定原因。

任何帮助将不胜感激。

感谢。

修改

终于搞定了......将 WebMessageBodyStyle.Wrapped 更改为 WebMessageBodyStyle.Bare

1 个答案:

答案 0 :(得分:0)

感谢您分享您的解决方案。我需要WebMessageBodyStyle.Bare位,但我的另一个问题是我的JSON被包装在父节点"节点"根据其他网站的建议:

Not Working --> {"MethodParamName":[{"prop1":"value1","prop2":"value2"}]}

但是我的JSON总是为空。一旦我放弃了'#34;父节点"在我的JSON中我的WCF最终可以读取对象:

Working --> {"prop1":"value1","prop2":"value2"}