【发布时间】: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