Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / Web Services / August 2007

Tip: Looking for answers? Try searching our database.

Preventing Escapes in Post

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
SevDer - 26 Aug 2007 07:49 GMT
Hi,

I am trying to consume the webservice which is written with Java through the
provided wsdl & xsd definitions.
However there is a slight problem.

Problem is, they are expecting a clean XML but .NET converts my query XML
into escaped form into the SOAP body which makes their service to respond in
the following form:

<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><soapenv:Fault><faultco
de>soapenv:Server.userException</faultcode><faultstring>java.lang.IndexOutOfBoun
dsException
:
Index: 0, Size: 0</faultstring><detail><ns1:hostname
xmlns:ns1="http://xml.apache.org/axis/">trajanoxp</ns1:hostname></detail></soapenv:Fault></
soapenv:Body></soapenv:Envelope
>

Now my question is: Is there a way to prevent this escaping? Or I must write
all the soap from string and send the whole XML string manually?

Thanks for your help in advance.

Signature

SevDer
www.sevder.com

John Saunders [MVP] - 26 Aug 2007 18:13 GMT
> Hi,
>
[quoted text clipped - 4 lines]
> Problem is, they are expecting a clean XML but .NET converts my query XML
> into escaped form into the SOAP body

Obviously, this is not something that .NET does on its own, or everyone
would have this problem. This obviously has to do with the way that you are
using .NET.

Please tell us how you are producing the XML.

Also, is there a reason that you didn't just consume the web service by
using Add Web Reference in Visual Studio?
Signature

John Saunders [MVP]

SevDer - 26 Aug 2007 20:15 GMT
Hello John,

Thanks for the reply.

I think you should check this again. I've learned that .NET actually escapes
the inner XML to prevent bad XML forming on some cases. And as far as I
learned this is the behavior of .NET not the way that I use.
Additionally the otherway around problem is there too. For your webservice
to work with other applications, you will need to escape all received inner
XMLs as they (like Java) send it as nonescaped form.

Also I added as web reference and I am trying to make the webreference to
work not any other way. If I cannot make this working, then I will have to
POST using regular HTTP Post and not use wsdl reference.

And their WSDL defined method calls does not accept structured objects but
simple and generic object which actually is simple XML.

The bottom line is, I am just trying to learn if there is a way for .NET to
not to escape my request XML while sending over!

Signature

Sevket Seyalioglu
CTO
www.kbstours.com

>> Hi,
>>
[quoted text clipped - 13 lines]
> Also, is there a reason that you didn't just consume the web service by
> using Add Web Reference in Visual Studio?
John Saunders [MVP] - 27 Aug 2007 02:14 GMT
> Hello John,
>
[quoted text clipped - 16 lines]
> The bottom line is, I am just trying to learn if there is a way for .NET
> to not to escape my request XML while sending over!

I promise you that, as a general rule, .NET doesn't prevent people from
using XML by escaping it. You are clearly using it in a way that other
developers do not use it - they are succeeding and you are failing.

Please post some code showing us how you are using XML. Among other things,
your mention of "inner xml" is frightening. You are doing something very
strange.

Please look at some of the following links on Web Service basics.

Overview of XML Web services:

http://msdn2.microsoft.com/en-us/library/7bkzywba.aspx

A walkthrough of building a basic XML Web service:

http://msdn2.microsoft.com/en-us/library/7hs6sw69.aspx

A walkthrough of building a basic client application:

http://msdn2.microsoft.com/en-us/library/hk7y1596.aspx

Serializing objects with XML web services

http://msdn2.microsoft.com/en-us/library/564k8ys4.aspx
Signature

John Saunders [MVP]

Steven Cheng[MSFT] - 27 Aug 2007 05:08 GMT
Thanks for John's input.

Hello SevDer,

I agree that the problem should be quite specific to the service and its
requirement on the SOAP message format. Would you provide some further
information on the service(such as the format and structure of the SOAP
message it expects from client). Normally, for any string value inside XML
document(include SOAP envelope), it have to escape those special characters
so as to ensure the validity of the document.  If the customzation requests
for your scenario does be reasonable, we may look for some ways to
customize the client proxy class.

Please feel free to post here if there is anything we've missed.

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead



==================================================

Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.



Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.

==================================================
   

This posting is provided "AS IS" with no warranties, and confers no rights.

--------------------
>From: "John Saunders [MVP]" <john.saunders at trizetto.com>
>References: <7B84F435-B90B-40F7-8DF8-77C419164289@microsoft.com>
<OiPtxRA6HHA.4584@TK2MSFTNGP03.phx.gbl>
<7267F6E2-FD37-4E29-84F2-55937C3B6D13@microsoft.com>
>Subject: Re: Preventing Escapes in Post
>Date: Sun, 26 Aug 2007 21:14:58 -0400
[quoted text clipped - 15 lines]
>Path: TK2MSFTNGHUB02.phx.gbl!TK2MSFTNGP01.phx.gbl!TK2MSFTNGP05.phx.gbl
>Xref: TK2MSFTNGHUB02.phx.gbl
microsoft.public.dotnet.framework.aspnet.webservices:1413
>X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webservices
>
[quoted text clipped - 44 lines]
>
>http://msdn2.microsoft.com/en-us/library/564k8ys4.aspx
KBSTours - 28 Aug 2007 02:54 GMT
Hi Steven,

The webservice (not the native .NET webservice) which is written in Java is
expecting the string in XML format without being escaped. Its not my
service, I am just trying to consume it.
So how can I customize it in the proxy class?

What are the basics? Are there any samples or guides?

Signature

CTO
www.kbstours.com

> Thanks for John's input.
>
[quoted text clipped - 121 lines]
>>
>>http://msdn2.microsoft.com/en-us/library/564k8ys4.aspx
Steven Cheng[MSFT] - 29 Aug 2007 04:07 GMT
Thanks for the reply,

So based on your further description, I know that the java webservice
actually expect a webservice SOAP message which contains an XML fragment
(which is not escaped) as part of the SOAP body itself. I'm afraid this
doesn't quite conform to XML webservice standard. Because for any method's
data(parameters or return value) ,if it contains particular charaters, it
should be escaped. For example, the SOAP body xml document is used to
represent a request message of a method call, however, if your parameters
data is a XML fragment and not escaped, how can we know which part of the
xml document is the method body and which part are parameters data?

Therefore, for the scenario here, I think it would be better to manually
post the XML soap message through some network components such as
HttpWebRequest as it can let you freely control the underlying tranfered
message data.  How do you think?

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead

This posting is provided "AS IS" with no warranties, and confers no rights.

--------------------
>From: "KBSTours" <kbstours@kbstours.com>

>Hi Steven,
>
[quoted text clipped - 31 lines]
>>
>> Get notification to my posts through email? Please refer to

http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
>> ications.
>>
[quoted text clipped - 66 lines]
>>>>
>>>> The bottom line is, I am just trying to learn if there is a way for
NET
>>>> to not to escape my request XML while sending over!
>>>
[quoted text clipped - 24 lines]
>>>
>>>http://msdn2.microsoft.com/en-us/library/564k8ys4.aspx
KBSTours - 30 Aug 2007 03:11 GMT
Thanks Steven,

I was actually looking for answer and you've given that to me.
At least I do not need to look for more.

I also during that time, given up and started developing by my own posting
as I didn't see any chance.

Thanks for the information.

Signature

CTO
www.kbstours.com

> Thanks for the reply,
>
[quoted text clipped - 171 lines]
>>>>
>>>>http://msdn2.microsoft.com/en-us/library/564k8ys4.aspx
Steven Cheng[MSFT] - 30 Aug 2007 05:55 GMT
Thanks for your followup,

It's a pity that we can not do more here with the built-in features. Also,
through XML webservice is designed to provide heterogenious platform
interop and recommend document-literal and WSDL/SOAP restricted message
formats, there are still many realworld services which do not quite conform
to that, that makes the interop difficult :(.

Anyway, if you need any further help later, please feel free to post here.

Thanks for your posting!

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead

This posting is provided "AS IS" with no warranties, and confers no rights.

--------------------
>From: "KBSTours" <kbstours@kbstours.com>
>References: <7B84F435-B90B-40F7-8DF8-77C419164289@microsoft.com>
<OiPtxRA6HHA.4584@TK2MSFTNGP03.phx.gbl>
<7267F6E2-FD37-4E29-84F2-55937C3B6D13@microsoft.com>
<O0UuveE6HHA.1148@TK2MSFTNGP05.phx.gbl>
<X#gO#$F6HHA.4200@TK2MSFTNGHUB02.phx.gbl>
<91A8CA6E-D03E-4179-8CF2-6EA84BEB5D1F@microsoft.com>
<JlIX0me6HHA.5608@TK2MSFTNGHUB02.phx.gbl>
>In-Reply-To: <JlIX0me6HHA.5608@TK2MSFTNGHUB02.phx.gbl>
>Subject: Re: Preventing Escapes in Post
[quoted text clipped - 18 lines]
>Path: TK2MSFTNGHUB02.phx.gbl!TK2MSFTNGP01.phx.gbl!TK2MSFTNGP04.phx.gbl
>Xref: TK2MSFTNGHUB02.phx.gbl
microsoft.public.dotnet.framework.aspnet.webservices:1435
>X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webservices
>
[quoted text clipped - 74 lines]
>>>>
>>>> Get notification to my posts through email? Please refer to

http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
>>>> ications.
>>>>
[quoted text clipped - 103 lines]
>>>>>
>>>>>http://msdn2.microsoft.com/en-us/library/564k8ys4.aspx
KBSTours - 28 Aug 2007 02:57 GMT
Hi John,

It is not my first time using webservices.
Please see Stevens comments too. He clearly mentions that .NET needs to do
this escaping as a safe guard which I am trying to prevent. And this is not
an issue when both ends are .NET code but when one of the end is not .NET
like Java then you have a problem.

I've spent good amount of time to see where I fail and finally find this out
by writing the TraceExtension to the webservice call.

So if you can find anything for this, please let me know.

Thanks

Signature

CTO
www.kbstours.com

> news:7267F6E2-FD37-4E29-84F2-55937C3B6D13@microsoft.com...
>> Hello John,
[quoted text clipped - 43 lines]
>
> http://msdn2.microsoft.com/en-us/library/564k8ys4.aspx
John Saunders [MVP] - 28 Aug 2007 13:29 GMT
> Hi John,
>
> It is not my first time using webservices.
> Please see Stevens comments too. He clearly mentions that .NET needs to do
> this escaping as a safe guard which I am trying to prevent.

You have misread Steven's post. The escaping he's referring to is within
text nodes. That is, within an attribute value or within the text value of
an element. For instance:

<element attr="&lt;x&gt;">Includes &quot;&amp;&quot;</element>

The main portion of your SOAP messages should not be getting escaped. If it
is, then you are doing something very unusual.

As a hint: note that there are many questions about web services on this
newsgroup, and yet no questions about how to not escape SOAP messages. Your
problem must be unique to your code.

Please post some of your code, so we can see what is going on. In
particular, if you can create a smaller example that reproduces what you're
seeing, and then if you could post the WSDL and client code for that smaller
example, then we'd be able to see what you're doing to produce escaped XML.
Without that, we're just guessing.

And, please let me reiterate that this may very well have to do with the
fact that you are manipulating OuterXml. It should be unnecessary to deal
with the string representation of XML in a web service.

Here are some basic references on Web Services in .NET:

Overview of XML Web services:
http://msdn2.microsoft.com/en-us/library/7bkzywba.aspx

A walkthrough of building a basic XML Web service:
http://msdn2.microsoft.com/en-us/library/7hs6sw69.aspx

A walkthrough of building a basic client application:
http://msdn2.microsoft.com/en-us/library/hk7y1596.aspx

Serializing objects with XML web services
http://msdn2.microsoft.com/en-us/library/564k8ys4.aspx

Signature

John Saunders [MVP]


Rate this thread:







Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.