WCF Json为DataMember元素返回空值

时间:2014-02-01 19:51:59

标签: c# wcf web-services

当我使用浏览器尝试使用时,我的工作正常,我的意思是,所有正确的值都会返回。

但是当我尝试使用POST方法从我的客户端APP执行此操作时,服务器执行的操作无关紧要,客户端获取空值。

这是我的回归课程:

[DataContract]
public class ResponseModel
{
    [DataMember(Name = "exito", Order = 0)]
    public bool Exito { get; set; }
    [DataMember(Name = "logout", Order = 1)]
    public bool LogOut { get; set; }
    [DataMember(Name = "frase", Order = 2)]
    public String Frase { get; set; }
}

这是我的服务合同

[ServiceContract]
public interface IService1
{


    [OperationContract]
    [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "HelloWorld")]
    ResponseModel HelloWorld();
}

1 个答案:

答案 0 :(得分:0)

由于您尚未发布ResponseModel HelloWorld();的实施方式以及如何提出请求,因此我会尝试猜测!

如果您要向服务发布一些数据,则需要使用 XML JSON 进行 POST 的方法。对于此更改,您的 ServiceContract 就像这样:

[ServiceContract]
public interface IService1
{
    [OperationContract]
    [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "HelloWorld")]
    ResponseModel HelloWorld();
}

如果您想在JSON中发出请求,我已添加 RequestFormat = WebMessageFormat.Json 。对于 XML ,请将其设为 RequestFormat = WebMessageFormat.XML

现在,当您发出请求时,请在 JSON / XML 中添加数据。 如果您可以发布您的请求格式,则可以提供更合适的建议。要在 POST 请求中发送数据,您必须设置请求标头 Content-Type:application / json;字符集= UTF-8 即可。 我希望这会有所帮助。