【问题标题】:WCF Rest service receiving object as nullWCF Rest 服务接收对象为空
【发布时间】:2016-06-27 11:12:42
【问题描述】:

我有 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;
        }

Item 类如下所示。

 [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。

{"UserId":"1","Name":"1","Description":"1","Cost":"1","IsNegotiable":"1","LocationLat":"1 ","LocationLong":"1","Condition":"1","DeliveryType":"1","PostalCode":"1","Category":"13"}

但 WCF 方法将 Item 设为 null 不知道为什么。

任何帮助将不胜感激。

谢谢。

编辑

终于成功了...将 WebMessageBodyStyle.Wrapped 更改为 WebMessageBodyStyle.Bare

【问题讨论】:

  • 你能显示用于发送对象的代码吗?我建议检查的第一件事是您使用的是 POST 请求,而不是带参数的 GET。
  • Android 代码是否指定了 content-type 标头。
  • 是的,它会添加标题。我还尝试在从邮递员测试时添加文本/json
  • 我正在使用邮递员进行测试。并在 android 即时通讯中使用 volly 发送请求。是的,它的帖子
  • 终于成功了...将 WebMessageBodyStyle.Wrapped 更改为 WebMessageBodyStyle.Bare

标签: c# android wcf rest


【解决方案1】:

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

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

但我的 JSON 始终为空。但是,一旦我删除了 JSON 的“父节点”,我的 WCF 终于可以读取该对象了:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 2016-06-15
    • 2011-08-28
    • 1970-01-01
    相关资源
    最近更新 更多