Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > ASP .Net Web Services > How to get the "raw" XML document returned from a web service

Reply
Thread Tools

How to get the "raw" XML document returned from a web service

 
 
MikeL
Guest
Posts: n/a
 
      02-17-2005
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


 
Reply With Quote
 
 
 
 
Keenan Newton
Guest
Posts: n/a
 
      02-17-2005
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
}

 
Reply With Quote
 
 
 
 
MikeL
Guest
Posts: n/a
 
      02-17-2005
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" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) 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
> }
>



 
Reply With Quote
 
Keenan Newton
Guest
Posts: n/a
 
      02-18-2005
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

 
Reply With Quote
 
Sami Vaaraniemi
Guest
Posts: n/a
 
      02-18-2005

"MikeL" <(E-Mail Removed)> wrote in message
news:e$(E-Mail Removed)...
> 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


 
Reply With Quote
 
MikeL
Guest
Posts: n/a
 
      02-18-2005
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" <(E-Mail Removed)> wrote in message
news:cv46rm$61a$(E-Mail Removed)...
>
> "MikeL" <(E-Mail Removed)> wrote in message
> news:e$(E-Mail Removed)...
>> 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
>



 
Reply With Quote
 
Sami Vaaraniemi
Guest
Posts: n/a
 
      02-18-2005

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" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> 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" <(E-Mail Removed)> wrote in message
> news:cv46rm$61a$(E-Mail Removed)...
>>
>> "MikeL" <(E-Mail Removed)> wrote in message
>> news:e$(E-Mail Removed)...
>>> 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
>>

>
>



 
Reply With Quote
 
Keenan Newton
Guest
Posts: n/a
 
      02-18-2005
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

 
Reply With Quote
 
Trevor Pinkney
Guest
Posts: n/a
 
      02-21-2005
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" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed) 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
>> }




 
Reply With Quote
 
Dan Rogers
Guest
Posts: n/a
 
      03-08-2005
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" <(E-Mail Removed)>
>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$(E-Mail Removed)>
>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
>
>
>


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: How include a large array? Edward A. Falk C Programming 1 04-04-2013 08:07 PM
Using document.load() to get html NOT xml document icogs Javascript 0 01-31-2008 04:02 AM
InvocationTargetException when calling "new Service()" in Axis web service to call another web service Michael Averstegge Java 0 01-10-2006 11:05 PM
Refer to an XML document from within an XML document Manish Hatwalne XML 1 07-13-2004 10:24 AM
Help on including one XML document within another XML document using XML Schemas Tony Prichard XML 0 12-12-2003 03:18 PM



Advertisments