> Any suggestions as to how I can do this?

If you start with WSDL, it should do what you want. 

Does the Python webservices stack "do" WSDL ?


 

-----Original Message-----
From: C.C. Ang [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, March 09, 2005 6:17 PM
To: [email protected]
Subject: Receiving multiple parameters using Java

Hi there all,
I am a SOAP and AXIS newbie (3 days old) and had a question re returning
multiple parameters using java.
I have looked in the archives and cannot find anything that resolves my
question. So my conclusion is that I must be missing something simple.
8-)

I have written a SOAP server written in python which takes in
3 parameters (Code, Timestamp and Misc) and returns these 3 parameters
as well as an additional parameter "Status".

The SOAP XML sent back looks like the following.
'''
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance";
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsd="http://www.w3.org/1999/XMLSchema";
>
<SOAP-ENV:Body>
<MyRequestResponse SOAP-ENC:root="1">
<Result>
<Code xsi:type="xsd:string">Hello</LocalOPCode>
<Status xsi:type="xsd:string">success</Status>
<Misc xsi:type="xsd:string">one</LocalTAX>
<Timestmap xsi:type="xsd:string">two</BridgeTNXNo>
</Result>
</MyRequestResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
'''

My java client written using axis1.2RC3, snippet follows....
All it does is calls invoke and prints out the returned result, which
seems to be an array.

'''
call.addParameter("Code",
                  org.apache.axis.Constants.XSD_STRING,
                  javax.xml.rpc.ParameterMode.IN);
/* ... more of the same ... */
call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_ARRAY );

Object[] ret = (Object[])call.invoke( new Object[]{"Hello", "one", "two"
);

for ( int i = 0; i < ret.length; i++ ) {
    System.out.println( "Sent 'Hello!', got '" + ret[i] + "'" ); }

'''

>From the client, it seems like call.invoke() returns an array.

My results are
Sent 'Hello!', got 'Hello'
Sent 'Hello!', got 'success'
Sent 'Hello!', got 'one'
Sent 'Hello!', got 'two'

I need to be able to distinguish which parameter is the "Status"
parameter. This information is lost cos the client gets back the results
in an array.

I need it to be in a Map (HashMap) or something like that or a class?
Something which will allow to find out the value of Status.

Any suggestions as to how I can do this?

I could use something like jdom to unmarshall the XML but thought AXIS
might have something that would be similar.

Many thanks in advance,
Chai
-- 
| O! it is excellent! To have a giant's strength, but it is tyrannous! 
| To use it like a giant. - William Shakespeare

-----------------
Utiba Pty Ltd
This message has been scanned for viruses and dangerous content by Utiba
mail server and is believed to be clean.

Reply via email to