Re: Requestparameters

Anne Thomas Manes <[email protected]>
Newsgroups gmane.text.xml.soap.user
Message-ID <[email protected]>
Agreed. If the service is using RPC style, it should not require a 
particular namespacing of the parameters. On the other hand, if it is using 
Document style, then the schema will indicate what the namespace 
requirements are.

Anne

At 10:06 AM 4/12/2004, you wrote:
>Anne,
>
>Thanks for the correction.
>
>Section 3.5 of WSDL 1.1 (http://www.w3.org/TR/wsdl.html#_soap:body) 
>specifies "reader makes right" versus "writer makes right" for certain 
>scenarios.  Given, as you have pointed out, that rpc requires the wrapper 
>that will not be specified in the schema even when concrete types are 
>forced (using literal), I do not see how the service described below can 
>require a particular namespacing of the parameters (writer makes right) 
>unless the operation binding is doc/lit.  What am I missing?
>
>Scott Nichol
>
>Do not send e-mail directly to this e-mail address,
>because it is filtered to accept only mail from
>specific mail lists.
>
>----- Original Message -----
>From: "Anne Thomas Manes" <[email protected]>
>To: <[email protected]>
>Sent: Friday, April 09, 2004 2:31 PM
>Subject: Re: Requestparameters
>
>
>Actually, the elementFormDefault attribute doesn't apply to RPC-style 
>messages, because you don't have a schema that defines either the wrapper 
>element (the method name) or the parameter elements. These elements are 
>automatically generated by the SOAP runtime. The SOAP 1.1 specification 
>doesn't specify what namespace the parameter elements should belong to.
>
>Per the WS-I Basic Profile (which defines RPC/Literal, but not 
>RPC/Encoded), the parameter elements should be in no namespace. See:
>
>http://www.ws-i.org/Profiles/Basic/2003-08/BasicProfile-1.0a.html#refinement35268960
>
>
>5.6.20 Namespace for Part Accessors
>For rpc-literal SOAP messages, WSDL 1.1 is not clear what namespace, if 
>any, the accessor elements for parameters and return value are a part of. 
>Different implementations make different choices, leading to 
>interoperability problems.
>
>R2735 A MESSAGE described with an rpc-literal binding MUST place the part 
>accessor elements for parameters and return value in no namespace.
>
>Settling on one alternative is crucial to achieving interoperability. The 
>Profile places the part accessor elements in no namespace as doing so is 
>simple, covers all cases, and does not lead to logical inconsistency.
>
>
>At 02:16 PM 4/9/2004, you wrote:
>
>   This is an aspect of XML that was poorly defined until the XML Schema 
> spec.  That spec defines an attribute named 'elementFormDefault', which 
> can have values 'qualified' and 'unqualified'.  With a value of 
> 'unqualified', the XML looks like the Apache SOAP payload you show 
> below.  That the MS SOAP service you are working with wants namespaces 
> for each element implies that the WSDL for the service contains a schema 
> that specifies the 'qualified' form.  (Note: elementFormDefault is 
> commonly used to set global behavior, i.e. behavior for all complexTypes 
> in a schema.  I think there is also an elementForm attribute that affects 
> behavior for a single complexType.)
>
>   In the current nightly build of Apache SOAP, the SOAPContext class has 
> a method
>
>        public void setQualifyElements(boolean qualifyElements)
>
>   that allows you to specify whether elements should be qualified.  If 
> you use that code base and call this method with a parameter of true, you 
> should be the behavior you desire.
>
>       ...
>       call.setSOAPMappingRegistry(Smr);
>       call.getContext().setQualifyElements(true);
>       ...
>
>   Scott Nichol
>
>   Do not send e-mail directly to this e-mail address,
>   because it is filtered to accept only mail from
>   specific mail lists.
>   ----- Original Message -----
>   From: "jer ." <[email protected]>
>   To: <[email protected]>
>   Sent: Friday, April 09, 2004 1:19 PM
>   Subject: Requestparameters
>
>
>   Hello !
>
>   Could someone please explain to me the following ? Please !!!
>
>   All the request examples from Apache SOAP use different namespaces for the
>   first subelement
>   to the SOAP body and the parameter elements.
>
>   My SOAP request sent to a MS SOAP server failes due to the fact that SOAP
>   parameters having another
>   namespace then the first SOAPbody subelement. Renaming the parameters with
>   the prefix "ns1:"
>   makes the requests work so I know thats where the problem is.
>
>   According to the sample requests on the w3c forum
>   ( see. http://www.w3.org/TR/2003/REC-soap12-part0-20030624/#L1165 ) the 
> same
>   namespace is used
>   for all SOAP parameter elements in the same body subelement so from my 
> point
>   of view it looks
>   like Apache SOAP is making non standard requests !?!??
>
>   I have even seen some samples of requests from Axis that shows the same
>   behavior ?!?
>
>   See below how the "Login" element doesn't use the qualified name
>   "ns1:Login"....
>
>   My request from Apache SOAP
>   ---------------------------
>
>   POST http://www.yaddayadday.com/webservices/customer/customer.asmx HTTP/1.0
>   Host: www.yaddayadday.com:80
>   Content-Type: text/xml; charset=utf-8
>   Content-Length: 554
>   SOAPAction:
>   "http://www.yaddayadday.com/webservices/customer/RequestProductList"
>
>   <?xml version='1.0' encoding='UTF-8'?>
>   <SOAP-ENV:Envelope
>   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
>   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>     <SOAP-ENV:Body>
>       <ns1:RequestProductList
>   xmlns:ns1="http://www.yaddayadday.com/webservices/customer"
>   SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
>          <Login xsi:type="xsd:string">USERID</Login>
>          <Password xsi:type="xsd:string">PASSWORD</Password>
>       </ns1:RequestProductList>
>   </SOAP-ENV:Body>
>   </SOAP-ENV:Envelope>
>
>
>   What it should look like ( According to the MS server and me...)
>   -----------------------------------------------------------------
>
>   POST http://www.yaddayadday.com/webservices/customer/customer.asmx HTTP/1.0
>   Host: www.yaddayadday.com:80
>   Content-Type: text/xml; charset=utf-8
>   Content-Length: 554
>   SOAPAction:
>   "http://www.yaddayadday.com/webservices/customer/RequestProductList"
>
>   <?xml version='1.0' encoding='UTF-8'?>
>   <SOAP-ENV:Envelope
>   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
>   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>     <SOAP-ENV:Body>
>       <ns1:RequestProductList
>   xmlns:ns1="http://www.yaddayadday.com/webservices/customer"
>   SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
>          <ns1:Login xsi:type="xsd:string">USERID</ns1:Login>
>          <ns1:Password xsi:type="xsd:string">PASSWORD</ns1:Password>
>       </ns1:RequestProductList>
>   </SOAP-ENV:Body>
>   </SOAP-ENV:Envelope>
>
>
>   Below is my code ( that looks like all the samples I found around).
>   -------------------------------------------------------------------
>
>   URL url = new
>   URL("http://www.yaddayadday.com/webservices/customer/customer.asmx");
>
>   Call call = new Call();
>   call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
>   call.setTargetObjectURI("http://www.yaddayadday.com/webservices/customer");
>   call.setMethodName("RequestProductList");
>   call.setSOAPMappingRegistry(Smr);
>
>   Vector params = new Vector();
>
>   params.add(new Parameter("Login",String.class,"USERID",null) );
>   params.add(new Parameter("Password",String.class,"PASSWORD",null) );
>
>   call.setParams(params);
>
>   resp =
> 
>call.invoke(url,"http://www.yaddayadday.com/webservices/customer/RequestProductList");
>
>
>   Conclusion
>   ----------
>
>   So my question is if Apache SOAP is using a non standard implementation or
>   if I am doing something wrong
>   in my code/assumption. Anyone know how to solve this without rewriting the
>   SOAP Apache implementation or the service ?
>
>   /Thanks, Jer
>
>   _________________________________________________________________
>   Auktioner: Tjäna en hacka på gamla prylar http://tradera.msn.se
>~~~~~~~~~~~~~~~~~~
>Anne Thomas Manes
>VP & Research Director
>Burton Group

~~~~~~~~~~~~~~~~~~
Anne Thomas Manes
VP & Research Director
Burton Group
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.