.NET Forum / ASP.NET / Web Services / August 2007
Preventing Escapes in Post
|
|
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="<x>">Includes "&"</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]
Free MagazinesGet 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 ...
|
|
|