![]() |
How to get the "raw" XML document returned from a web service
Hello.
I am consuming a web service by adding a web reference to the service's WSDL file, and everything works fine. When I call the service I need to also "grab" the "raw" XML document that the service returned. How do I go about this? Do I use the XMLSerializer? Thanks in advance, Mike |
Re: How to get the "raw" XML document returned from a web service
Mike you should be able to pass the XmlElement object without a
problem. [WebMethod] public System.Xml.XmlElement MyMethod() { //some code to get XmlElement return myXmlElement; //System.Xml.XmlElement } |
Re: How to get the "raw" XML document returned from a web service
Hi, Keenan. Thanks for the response.
The problem is on the consumer of the web service. They want the XML document. I don't want to write another WebMethod just for this. I'd like to know how to serialize the returned data to an XML doc. The following code will do it and save it to disk, but ultimately I want not to write it to disk, but rather store it in a "string" variable: System.Xml.Serialization.XmlSerializer s = new System.Xml.Serialization.XmlSerializer(typeof(seRe sults),https://www.somedomain.com/RatingHub); Stream fs = new FileStream("D:\\stream.txt", FileMode.Truncate ); XmlWriter writer = new XmlTextWriter(fs, new UTF8Encoding()); s.Serialize(writer, results); Any thoughts? Thanks again, Mike "Keenan Newton" <kameleon_dj@yahoo.com> wrote in message news:1108675246.408400.142540@z14g2000cwz.googlegr oups.com... > Mike you should be able to pass the XmlElement object without a > problem. > > [WebMethod] > public System.Xml.XmlElement MyMethod() > { > //some code to get XmlElement > return myXmlElement; //System.Xml.XmlElement > } > |
Re: How to get the "raw" XML document returned from a web service
OK you need to find out what object type they are expecting on their
end if it a string or XMlNode, or XmlElement, typically a XmlNode will accept a XmlDocument or XmlElement. An XmlElement is essentially or it can be the Xml within an Xmldocument. the XmlDocument class has a property called DocumentElement. This is essentially all the XML in a "XmlDocument" The DocumentElement if you look at it really is of type XmlElement. So if they want it as a string of Xml you again can use the XmlElement, and return the OuterXml element. So First things first find out the exact data type they want XmlDocument, XmlNode, XmlElement or string. Oh yes don't use the filestream use a MemoryStream if possible |
Re: How to get the "raw" XML document returned from a web service
"MikeL" <MichaelLopez@inds.com> wrote in message news:e$XoiuSFFHA.3908@TK2MSFTNGP12.phx.gbl... > Hello. > > I am consuming a web service by adding a web reference to the service's > WSDL file, and everything works fine. > > When I call the service I need to also "grab" the "raw" XML document that > the service returned. > > How do I go about this? Do I use the XMLSerializer? > > Thanks in advance, > You can use a Soap extension to log the SOAP to a file. Check out http://msdn.microsoft.com/library/de...classtopic.asp (watch for the wrap). To hook the SoapExtension in the consumer application, compile the code in the article to TraceSoapExtension.dll and add this to the consumer's config file: <system.web> <webServices> <soapExtensionTypes> <add type="TraceExtension, TraceSoapExtension" priority="1" group="0" /> </soapExtensionTypes> </webServices> </system.web> Regards, Sami |
Re: How to get the "raw" XML document returned from a web service
Hello, Sami. Thanks for the response.
I figured out a way to do it that looks like the following. Can you think of why this is not a good way to do it? A call to the web service has been made and the returned "seResutls" object assigned to variable "results": __________________________________________________ _________________________________________ System.Xml.Serialization.XmlSerializer s = new System.Xml.Serialization.XmlSerializer(typeof(seRe sults)); MemoryStream mm = new MemoryStream(); // Now serialize it: s.Serialize(mm, results); // Now convert it to a string: ASCIIEncoding encoding = new ASCIIEncoding( ); string str = encoding.GetString(mm.GetBuffer()); str = str.Trim(); MessageBox.Show(str); __________________________________________________ _________________________________________ Thanks again, Mike "Sami Vaaraniemi" <samivanospam@pleasejippii.fi> wrote in message news:cv46rm$61a$1@phys-news1.kolumbus.fi... > > "MikeL" <MichaelLopez@inds.com> wrote in message > news:e$XoiuSFFHA.3908@TK2MSFTNGP12.phx.gbl... >> Hello. >> >> I am consuming a web service by adding a web reference to the service's >> WSDL file, and everything works fine. >> >> When I call the service I need to also "grab" the "raw" XML document that >> the service returned. >> >> How do I go about this? Do I use the XMLSerializer? >> >> Thanks in advance, >> > > You can use a Soap extension to log the SOAP to a file. Check out > http://msdn.microsoft.com/library/de...classtopic.asp > (watch for the wrap). > > To hook the SoapExtension in the consumer application, compile the code in > the article to TraceSoapExtension.dll and add this to the consumer's > config file: > > <system.web> > <webServices> > <soapExtensionTypes> > <add type="TraceExtension, TraceSoapExtension" priority="1" > group="0" /> > </soapExtensionTypes> > </webServices> > </system.web> > > Regards, > Sami > |
Re: How to get the "raw" XML document returned from a web service
You are re-serializing the 'results' object in the consumer, right? This is not the same as obtaining the original XML from the Soap message, but I guess it's ok if all you want is an XML representation of your object. Keep in mind that the original XML and the re-serialized version might not be identical. Regards, Sami "MikeL" <mikelpez@optonline.net> wrote in message news:OR6Da1aFFHA.3032@TK2MSFTNGP12.phx.gbl... > Hello, Sami. Thanks for the response. > > I figured out a way to do it that looks like the following. Can you think > of why this is not a good way to do it? A call to the web service has been > made and the returned "seResutls" object assigned to variable "results": > > __________________________________________________ _________________________________________ > System.Xml.Serialization.XmlSerializer s = new > System.Xml.Serialization.XmlSerializer(typeof(seRe sults)); > MemoryStream mm = new MemoryStream(); > > // Now serialize it: > s.Serialize(mm, results); > > // Now convert it to a string: > ASCIIEncoding encoding = new ASCIIEncoding( ); > string str = encoding.GetString(mm.GetBuffer()); > str = str.Trim(); > MessageBox.Show(str); > __________________________________________________ _________________________________________ > > > Thanks again, > > Mike > > "Sami Vaaraniemi" <samivanospam@pleasejippii.fi> wrote in message > news:cv46rm$61a$1@phys-news1.kolumbus.fi... >> >> "MikeL" <MichaelLopez@inds.com> wrote in message >> news:e$XoiuSFFHA.3908@TK2MSFTNGP12.phx.gbl... >>> Hello. >>> >>> I am consuming a web service by adding a web reference to the service's >>> WSDL file, and everything works fine. >>> >>> When I call the service I need to also "grab" the "raw" XML document >>> that the service returned. >>> >>> How do I go about this? Do I use the XMLSerializer? >>> >>> Thanks in advance, >>> >> >> You can use a Soap extension to log the SOAP to a file. Check out >> http://msdn.microsoft.com/library/de...classtopic.asp >> (watch for the wrap). >> >> To hook the SoapExtension in the consumer application, compile the code >> in the article to TraceSoapExtension.dll and add this to the consumer's >> config file: >> >> <system.web> >> <webServices> >> <soapExtensionTypes> >> <add type="TraceExtension, TraceSoapExtension" priority="1" >> group="0" /> >> </soapExtensionTypes> >> </webServices> >> </system.web> >> >> Regards, >> Sami >> > > |
Re: How to get the "raw" XML document returned from a web service
Sami also has a good idea but the code saves it to a file, not sure if
that is what you really want to do or not |
Re: How to get the "raw" XML document returned from a web service
This should do what you want.
/// <summary> /// Converts an object to its xml representation /// </summary> public static string ObjectToXml(object objectToConvert) { MemoryStream memStream = new MemoryStream(); XmlSerializer serializer = new XmlSerializer(objectToConvert.GetType()); serializer.Serialize(memStream, objectToConvert); StreamReader reader = new StreamReader(memStream); memStream.Position = 0; return reader.ReadToEnd(); } -Trevor Hello MikeL, > Hi, Keenan. Thanks for the response. > > The problem is on the consumer of the web service. They want the XML > document. > > I don't want to write another WebMethod just for this. I'd like to > know how to serialize the returned data to an XML doc. The following > code will do it and save it to disk, but ultimately I want not to > write it to disk, but rather store it in a "string" variable: > > System.Xml.Serialization.XmlSerializer s > = new > System.Xml.Serialization.XmlSerializer(typeof(seRe sults),https://www.s > omedomain.com/RatingHub); > > Stream fs = new > FileStream("D:\\stream.txt", FileMode.Truncate ); > > XmlWriter writer = new XmlTextWriter(fs, > new UTF8Encoding()); > > s.Serialize(writer, results); > > Any thoughts? > > Thanks again, > > Mike > > "Keenan Newton" <kameleon_dj@yahoo.com> wrote in message > news:1108675246.408400.142540@z14g2000cwz.googlegr oups.com... > >> Mike you should be able to pass the XmlElement object without a >> problem. >> >> [WebMethod] >> public System.Xml.XmlElement MyMethod() >> { >> //some code to get XmlElement >> return myXmlElement; //System.Xml.XmlElement >> } |
RE: How to get the "raw" XML document returned from a web service
Do you want to just see it (for learning/teaching?) or are you saying you
want the caller to always get back an XML document? If this latter is the case, use MSXML to format your own SOAP XML request, and use the HTTPPost method to post the document that represents the request to the service endpoint URL. Then take the output, strip out the HTTP header, and then load the remainder into an XML DOM (or just hand the client the stream and let them party on the raw html/xml.) -------------------- >From: "MikeL" <MichaelLopez@inds.com> >Subject: How to get the "raw" XML document returned from a web service >Date: Thu, 17 Feb 2005 15:02:38 -0500 >Lines: 15 >X-Priority: 3 >X-MSMail-Priority: Normal >X-Newsreader: Microsoft Outlook Express 6.00.2900.2180 >X-RFC2646: Format=Flowed; Original >X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 >Message-ID: <e$XoiuSFFHA.3908@TK2MSFTNGP12.phx.gbl> >Newsgroups: microsoft.public.dotnet.framework.aspnet.webservic es >NNTP-Posting-Host: 208.28.116.33 >Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFT NGP12.phx.gbl >Xref: TK2MSFTNGXA01.phx.gbl microsoft.public.dotnet.framework.aspnet.webservic es:5607 >X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webservic es > >Hello. > >I am consuming a web service by adding a web reference to the service's WSDL >file, and everything works fine. > >When I call the service I need to also "grab" the "raw" XML document that >the service returned. > >How do I go about this? Do I use the XMLSerializer? > >Thanks in advance, > >Mike > > > |
| All times are GMT. The time now is 05:53 PM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.