【问题标题】:C# webservice digesting json data to classC# webservice将json数据消化到类
【发布时间】:2016-10-12 19:15:40
【问题描述】:

我很难弄清楚如何设置我的 Web 服务来消化 json 数据变量。 我想获取在 POST 请求中发送的数据并将其分配给类。

我的函数(见下文)类始终为空 OrderReprint 所以我错过了一大步。任何帮助都会很棒。

 public Boolean Test(OrderReprint oreprints)
    {

        Debug.WriteLine(OrderReprints.seq1);
        Debug.WriteLine(OrderReprints.client);
        Debug.WriteLine(OrderReprints.Filename);
        Debug.WriteLine(OrderReprints.formcode);
        Debug.WriteLine(OrderReprints.jobnum);
        Debug.WriteLine(OrderReprints.userid);
        Debug.WriteLine(OrderReprints.seq1);
        return true;
    }

我的界面是这样的

[OperationContract]
        [WebInvoke(Method = "POST",
             RequestFormat = WebMessageFormat.Json,
             BodyStyle = WebMessageBodyStyle.WrappedRequest,
             ResponseFormat = WebMessageFormat.Json,
             UriTemplate = "Test")]
        Boolean Test(OrderReprint oreprints);

我的数据契约类如下所示

 [DataContract]
public class OrderReprint
{
  [DataMember]
  public string Filename;
  [DataMember] 
  public string seq1;
  [DataMember]
  public string jobnum;
  [DataMember]
  public string formcode;
  [DataMember]
  public string userid;
  [DataMember]
  public string client;
}   

我的调用 Ajax 调用如下所示:

$.ajax({

    beforeSend: function (xhrObj) {
        xhrObj.setRequestHeader("Content-Type", "application/json");
        xhrObj.setRequestHeader("Accept", "application/json");
    },
    type: "POST",
    url: URL,
    dataType: "text",
    data: JSON.stringify(params),
}).then(function (data) {

    if (data.results) {
    /* (done something here*/
    }

}).fail(function (e) {

    errorAlert('Process Job', 'Error retriving job informaiton!');
});

【问题讨论】:

  • 试试这个:data: { oreprints: JSON.stringify(params) },
  • 您也可以发布示例 JSON 吗?
  • 你可以从界面发布DataContract代码吗?
  • @Pawel: 对方法的调用不起作用,甚至不再进行
  • @Stinky : {"Filename":"NEW73907","seq1":"1","jobnum":"3081969","formcode":"MML1","userid":1, "client":"MAILMERGE"}

标签: c# json web-services


【解决方案1】:

我从 OperationContract 中删除了 BodyStyle,它起作用了!

BodyStyle = WebMessageBodyStyle.WrappedRequest,

[OperationContract]
        [WebInvoke(Method = "POST",
             RequestFormat = WebMessageFormat.Json,
             ResponseFormat = WebMessageFormat.Json,
             UriTemplate = "Test")]
        bool Test(OrderReprint oreprints);

感谢大家的帮助..

【讨论】:

  • 它也应该适用于 Bare。我刚回来(抱歉,拖了这么久),并注意到您发布了一个示例 JSON。这绝对是一个赤裸裸的要求。
  • 不确定,这是我唯一改变的吗?它奏效了。
  • 我相信 Bare 无论如何都是默认的,我认为如果你明确声明它不会改变任何东西。无论哪种方式,很高兴你让它工作:)
  • Aaron@ 我会进一步研究它,但就像你说的那样,它正在工作,哈哈,谢谢你的帮助
猜你喜欢
  • 2012-03-18
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多