Click here to Skip to main content
14,697,469 members
Please Sign up or sign in to vote.
4.50/5 (2 votes)
See more:
For the life of me I can not find a way to remove the automatically generated portion of my Get method.
given following code
[WebGet(UriTemplate = "{id}", BodyStyle=WebMessageBodyStyle.Bare, ResponseFormat=WebMessageFormat.Xml)]
public string Get(string id) {
return "blah";
}


I get following response.
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">blah</string>

How can I get just "blah".
Many Thanks.
Posted
Updated 29-Mar-11 14:27pm
v2
Comments
HimanshuJoshi 29-Mar-11 19:28pm
   
Edited to improve readability.

I think this will work, note the Stream as return argument.
[WebGet(UriTemplate = "{id}", BodyStyle = WebMessageBodyStyle.Bare)]
public Stream Get(string id)
{
  OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse;
  context.ContentType = "text/plain";
  return new System.IO.MemoryStream(ASCIIEncoding.Default.GetBytes("blah"));
}
   
Comments
cechode 1-Apr-11 19:52pm
   
Awsome! many thanks. works like a charm
Instead of changing the method signature, I would do this:

HttpWebResponse restResponse = (HttpWebResponse)restRequest.GetResponse();
string value = null;

using (var st = restResponse.GetResponseStream())
{
    StreamReader sr = new StreamReader(st);
    value = sr.ReadToEnd();
}

XmlDocument doc = new XmlDocument();
doc.LoadXml(value);
value = doc.InnerText;
   

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)




CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900