Hi,
I generated client artifacts from a WSDL file using wstools and I'm trying to consume
a third-party web service. However the server seems to expect xsi:type attributes to be
set in the request which the generated web service client doesn't do.
This is the fragment from the WSDL file:
| <xsd:element name="login">
| <xsd:complexType>
| <xsd:sequence>
| <xsd:element name="username" type="xsd:string"
maxOccurs="1" minOccurs="1"></xsd:element>
| <xsd:element name="password" type="xsd:string"
maxOccurs="1" minOccurs="1"></xsd:element>
| </xsd:sequence>
| </xsd:complexType>
| </xsd:element>
|
The generated SOAP request looks as follows:
| <env:Envelope
xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
| <env:Header />
| <env:Body>
| <ns1:login xmlns:ns1='http://testuri.org'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
| <username>TestUser</username>
| <password>MySecretPassword</password>
| </ns1:login>
| </env:Body>
| </env:Envelope>
|
This generates the following error message from the server: "server error. invalid
method parameters"
However , if I (manually, using a debugger in org.jboss.ws.soap.SOAPConnectionImpl.call())
change the request string to include xsi:type for the parameters, the request is
successfully accepted by the server:
| <env:Envelope
xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
| <env:Header />
| <env:Body>
| <ns1:login xmlns:ns1='http://testuri.org'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
| <username xsi:type="xsd:string">TestUser</username>
| <password xsi:type="xsd:string">MySecretPassword</password>
| </ns1:login>
| </env:Body>
| </env:Envelope>
|
How do I make JBossWS add the parameter types to the request?
Thanks,
Georges
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3976044#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...