2016-10-12 67 views
1

我有麻煩找出如何設置我的Web服務來消化JSON數據變量。 我想要在POST請求中發送數據並將其分配給類。C#webservice消化JSON數據到類

我的功能(見下文)類始終爲空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!'); 
}); 
+1

試試這個:'數據:{oreprints:JSON.stringify(PARAMS)}' –

+0

您可以發佈樣本JSON呢? –

+0

你能從界面發佈DataContract代碼嗎? – Aaron

回答

-1

我想你的參數沒有得到傳達轉交給JSON。

分配給變量並在發送之前檢查它是否有值。

變種臨時= JSON.stringify(PARAMS)

+0

是的,我已經檢查過轉換爲JSON .. – Mike

0

我刪除了BodyStyle從OperationContract的,它的工作!

BodyStyle = WebMessageBodyStyle.WrappedRequest

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

感謝大家對你的幫助..

+0

它也應該和Bare一起工作。我剛回來(對不起,花了這麼長時間),並注意到你已經發布了一個示例JSON。這絕對是一個裸機請求。 – Aaron

+0

不確定,那是我改變的唯一的東西?它的工作。 – Mike

+0

我相信Bare是默認的,我不認爲它會改變任何東西,如果你明確聲明它。無論哪種方式,很高興你得到它的工作:) – Aaron