I have written a REST Service in WCF in which I have created a method(PUT) to update a user. for this method I need to pass multiple body parameters
[WebInvoke(Method = "PUT", UriTemplate = "users/user",BodyStyle=WebMessageBodyStyle.WrappedRequest)]
[OperationContract]
public bool UpdateUserAccount(User user,int friendUserID)
{
//do something
return restult;
}
Although I can pass an XML entity of user class if there is only one parameter. as following:
var myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
myRequest.Method = "PUT";
myRequest.ContentType = "application/xml";
byte[] data = Encoding.UTF8.GetBytes(postData);
myRequest.ContentLength = data.Length;
//add the data to be posted in the request stream
var requestStream = myRequest.GetRequestStream();
requestStream.Write(data, 0, data.Length);
requestStream.Close();
but how to pass another parameter(friendUserID) value? Can anyone help me?
For all method types except GET only one parameter can be sent as the data item. So either move the parameter to querystring
[WebInvoke(Method = "PUT", UriTemplate = "users/user/{friendUserID}",BodyStyle=WebMessageBodyStyle.WrappedRequest)]
[OperationContract]
public bool UpdateUserAccount(User user, int friendUserID)
{
//do something
return restult;
}
or add the parameter as node in the request data
<UpdateUserAccount xmlns="http://tempuri.org/">
<User>
...
</User>
<friendUserID>12345</friendUserID>
</UUpdateUserAccount>