Question

I am having a RESTful service with the following method:

[WebInvoke] 
string GetDataFromStringAsString(string xmlString); 

My client call to the method is as below:

var client = new RestClient(); 
client.BaseUrl = serviceBaseUrl; 
var request = new RestRequest(method){RequestFormat = DataFormat.Xml}; 
request.Resource = resourceUrl; 
request.AddParameter("text/xml", requestBody, 
ParameterType.RequestBody); 
var response = client.Execute(request); 

Let us take a string to post as "Hello World".

Now the string that i post to the above method gives me a 400 Bad request. In order to get it working i had to wrap the above string in a element as shown below:

<string xmlns="http://schemas.microsoft.com/2003/10/ 
Serialization/">Hello World</string> 

Now when i post the above string i get a success response back from the server.

Why is that i have to manually wrap the string to make it work. Is there a way that i can achieve to post a string without doing the above manually.

Était-ce utile?

La solution

The only other way that I am aware of is to use stream as your input parameter. e.g.

[WebInvoke] 
string GetDataFromStringAsString(stream xmlString);

The problem with .Net 4 WCF REST is that fundamentally WCF only knows how to pass two types of info, either XML or a stream of bytes. Personally, I would use WCF Web API instead of the standard WCF REST library because you are going run into lots more of these kinds of issues.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top