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