2015-06-12 4 views
2

Я совершенно новый для мира WCF. Я пытаюсь сделать POST-вызов методу службы WCF и передать ему данные json.
Мой фрагмент кода, как показано ниже:Передача json paramter на wcf rest post post метод

Ajax POST вызов:

function PostJSON() { 

     var form_data = { 
      "req_limitmsg_header": { 
       "brch_code": "784", 
       "rqst_id": "00129538", 
       "tnx_id": "20150200008695", 
       "inp_user_id": "UAT01", 
       "inp_dttm": "20150311183413", 
       "Func_code": "6010 ", 
       "idms_tnx_type_code": "N", 
       "Spaces": "12", 
       "prod_ref_id": "12" 
      } , 
      "req_limitmsg_detail": [ 
       { 
        "jrn_exc_cur_code": "0000", 
        "jrn_exc_act_no": "019000090000", 
        "sign of exc_acpt_amt": "+", 
        "exc_acpt_amt": "0000000000000000", 
        "sign of jrn_exc_amt": "+", 
        "jrn_exc_amt": "0000000001500000" 
       }, 
       { 
        "jrn_exc_cur_code": "0000", 
        "jrn_exc_act_no": "019000090000", 
        "sign of exc_acpt_amt": "+", 
        "exc_acpt_amt": "0000000000000000", 
        "sign of jrn_exc_amt": "+", 
        "jrn_exc_amt": "0000000001500000" 
       } 
      ] 
     }; 

     $.ajax({ 
      cache: 'false', 
      async: 'false', 
      type: 'POST', 
      url: "http://localhost:10647/JsonTest.svc/Rest/RequestLimitCheckService", 
      data: JSON.stringify(form_data), 
      contentType: "application/json; charset=utf-8", 
      dataType: 'json', 
      crossDomain: true, 
      processData: true, 
      success: function (data, status, jqXHR) { 
       if(data != null) 
       { 
        alert("NOT NULL"); 
        alert(data.toString()); 
       } 
       else 
       { 
        alert("NULL"); 
        alert(data.toString()); 
        alert(status.toString()); 
       } 
      }, 
      error: function (response) { 
       alert(response); 
      } 
     }); 
    } 

WCF Метод:

[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json,RequestFormat=WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.Wrapped, 
      UriTemplate = "RequestLimitCheckService")] 
     public string RequestLimitCheck(string form_data) 
     { 
//do somethig 
} 

WCF Интерфейс

[OperationContract] 
    string RequestLimitCheck(string form_data); 

Что происходит, я всегда получаю пустую строку. Я также попытался указать стиль строки строки запроса, но это бесполезно. Он работает только отлично, если я задаю класс для приема данных json. Пожалуйста, дайте мне знать, если я что-то делаю неправильно или что-то не хватает.

ответ

0

Удалите JSON.stringify (form_data) и используйте вместо этого просто form_data и повторите попытку. Также вам нужно указать тип ожидаемого формата запроса.

+0

@ Sandeep Я попытался удалить JSON.stringify (form_data) и использовал просто form_data, но он даже не попал в метод WCF. – Trupti

+0

также я упомянул тип формата запроса в методе WCF (см. Выше фрагмент кода), но он не работает – Trupti

+0

http://www.codeproject.com/Articles/722874/Post-JSON-data-to-WCF-RESTful- Service-using-jQuery Используйте ссылку выше для примера кода, который пытается достичь аналогичной функциональности. Надеюсь, это поможет. –

Смежные вопросы