Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   ASP .Net Web Services (http://www.velocityreviews.com/forums/f64-asp-net-web-services.html)
-   -   How to get the "raw" XML document returned from a web service (http://www.velocityreviews.com/forums/t784555-how-to-get-the-raw-xml-document-returned-from-a-web-service.html)

MikeL 02-17-2005 08:02 PM

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



Keenan Newton 02-17-2005 09:20 PM

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
}


MikeL 02-17-2005 10:10 PM

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
> }
>




Keenan Newton 02-18-2005 03:18 AM

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


Sami Vaaraniemi 02-18-2005 07:58 AM

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



MikeL 02-18-2005 11:31 AM

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
>




Sami Vaaraniemi 02-18-2005 01:29 PM

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
>>

>
>




Keenan Newton 02-18-2005 06:22 PM

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


Trevor Pinkney 02-21-2005 07:20 PM

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
>> }





Dan Rogers 03-08-2005 12:58 AM

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.


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57