Restsharp - unable to post objects to wcf

379 views
Skip to first unread message

RR

unread,
Aug 28, 2012, 3:05:45 PM8/28/12
to rest...@googlegroups.com
Hi 
I am totally new to both RestSharp and WCF and I am not sure what I am doing wrong but I am not able to post objects to WCF (I am using AddBody method). I can post strings using AddBody but not an object. Here's what I have. 

Server Side:

[OperationContract]
        [Description("addUser")]
        [WebInvoke(Method = "POST", UriTemplate = "/addUser", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
        TSCRUResponse addUser(string id, string seqno, User usr);

public TSCRUResponse addUser(string id, string seqno, User usr)
        {
            TSCRUResponse r = new TSCRUResponse();
            r.status =  id + seqno + usr.name + usr.age + usr.gender;
            return r;
        }

Client side:

public void postmethod(string uri)
        {
            ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateRemoteCertificate);
            RestClient client = new RestClient();
            client.BaseUrl = uri;//
            client.Authenticator = new HttpBasicAuthenticator("username", "password");
            RestRequest request = new RestRequest("addUser", Method.POST);
            request.AddHeader("Accept", "application/json");
            //request.JsonSerializer = new RestSharp.Serializers.JsonSerializer();
            request.RequestFormat = DataFormat.Json;
            //request.AddParameter("id", "12839", ParameterType.UrlSegment);
            User usr = new User { age = "40", name = "user1", gender = "M" };
            request.AddBody(new {id="12398", seqno="001", User=usr });
                      
            var response = client.Execute<TSCRUResponse>(request);
            TSCRUResponse addres = response.Data;
            Console.WriteLine(addres.status);

        }

Fiddler output:   {"id":"12398","seqno":"001","User":{"name":"user1","age":"40","gender":"M"}}

When I run this in debugger (on the server side) I get a "null" object in the "usr" parameter but, the other parameters are ok.

Can someone point me in the right direction here..I am not sure what I am missing..

Object defs:
public class TSCRUResponse
    {
        [DataMember(Name = "status")]
        public string status { get; set; }
    }

    [DataContract]
    public class User
    {
        [DataMember(Name = "name")]
        public string name { get; set; }
        [DataMember(Name = "age")]
        public string age { get; set; }
        [DataMember(Name = "gender")]
        public string gender { get; set; }
    }

Thanks

david Grace

unread,
Apr 23, 2014, 1:15:30 PM4/23/14
to rest...@googlegroups.com
Your parameter name is wrong:
 request.AddBody(new {id="12398", seqno="001", User=usr });

Should be
 request.AddBody(new {id="12398", seqno="001", usr=usr });



在 2012年8月28日星期二UTC-6下午1时05分46秒,RR写道:
Reply all
Reply to author
Forward
0 new messages