0

REST、WCF、および JSON を使用してアプリケーションを機能させようとしています (これらすべてのテクノロジにとって新しいものです)。「GET」が正常に機能しています。問題を引き起こしているのは「POST」です。

以下に示すように、JSON.stringify を使用して JSON を「パック」し、POST を REST リソースに送信します。ただし、オブジェクトが要求を処理している WCF メソッドに到達すると、オブジェクトは常に null になります。

コードは次のとおりです。

   $(document).ready(function () {

       var input = {
           Customer: {
               customerId: "1",
               firstname: "luke",
               lastname: "sayaw",
               email: "lumsayaw@gmail.com",
               mobile: "0433395106",
               state: "QLD"
           }
       };

       $.ajax({
           url: 'http://local.rest/restservice.svc/getcustomer',
           contentType: "application/json; charset=utf-8",
           data: JSON.stringify(input),
           dataType: 'json',
           type: 'POST',
           async: true,
           success: function (data, success, xhr) {
               alert('Group saved - ' + data);

               alert('first name: ' + data.firstname);



           },
           error: function (xhr, status, error) {
               alert('Error! - ' + xhr.status + ' ' + error);
           }
       });

   });

サーバー側のコードは次のとおりです。

namespace RestService
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "RestService" in code, svc and config file together.

public class RestService : IRestService
{

    public string getcustomer(Customer Customer)
    {
        string id = Customer.customerId ;
        return new JavaScriptSerializer ().Serialize (Customer );
    }
}


[DataContract ]
public class Customer
{
    public string customerId {get;set;}
    public string firstname { get; set; }
    public string lastname { get; set; }
    public string email { get; set; }
    public string mobile { get; set; }
    public string state { get; set; }

}

}
namespace RestService
{


[ServiceContract]
public interface IRestService
{


    [OperationContract]
    [WebInvoke(Method = "POST",
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Bare,
        UriTemplate = "/getcustomer")]
    [return: MessageParameter(Name = "Customer")]
     string getcustomer(Customer Customer);
}
}

どうもありがとう

4

1 に答える 1

0

試す:

[OperationContract, WebGet(UriTemplate = "/GetJson", BodyStyle = WebMessageBodyStyle.Bare)] //ResponseFormat = WebMessageFormat.Json
Stream GetJSON(); 

....
return new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
于 2013-04-10T08:48:58.727 に答える