Try:
          setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR,
Boolean.TRUE);

-- dims


On 6/1/06, Jeffrey Ng <[EMAIL PROTECTED]> wrote:




Hi,



Sorry all, I am really at my wits end… look thru everywhere but just can't
seems to find my answers…



I am trying to get a SOAP response that have more than 1 type. Instead of a
normal <getQuoteReturn xsi:type="xsd:float">49.3</getQuoteReturn>,

I want to get <getQuoteReturn
xsi:type="xsd:state"><ID>123</ID><Value>0</Value></getQuoteReturn>



I quote the example getStockQuote.



This is the request:->

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

<?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>

    <ns1:getQuote
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:ns1="urn:xmltoday-delayed-quotes">

      <symbol xsi:type="xsd:string">c</symbol>

    </ns1:getQuote>

  </soapenv:Body>

</soapenv:Envelope>

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



This is the response:->

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

<?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>

    <ns1:getQuoteResponse
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:ns1="urn:xmltoday-delayed-quotes">

      <getQuoteReturn xsi:type="xsd:float">49.3</getQuoteReturn>

    </ns1:getQuoteResponse>

  </soapenv:Body>

</soapenv:Envelope>

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



the code to retrieve the returntype 'float' is below:



          call.setTargetEndpointAddress( url );

          call.setOperationName( new QName("urn:xmltoday-delayed-quotes",
"getQuote") );

          call.addParameter( "symbol", XMLType.XSD_STRING, ParameterMode.IN
);

          call.setReturnType( XMLType.XSD_FLOAT );



          // TESTING HACK BY ROBJ

          if (symbol.equals("XXX_noaction")) {

              symbol = "XXX";

          }



          call.setUsername( user );

          call.setPassword( passwd );



          Object ret = call.invoke( new Object[] {symbol} );



To retrieve the 'state' as what is required, how to I set the setReturnType?
Do I do this:-



                        QName stateQN = new QName( "WSG-interface", "State"
);

                        call.setTargetEndpointAddress( url );

                        call.setOperationName( new QName("WSG-interface",
"ReadBalanceRequest") );

                        call.addParameter( "MSN", XMLType.XSD_STRING,
ParameterMode.IN );

                        call.addParameter( "State", stateQN,
ParameterMode.OUT );

                        call.setReturnType( stateQN );

                        Object ret = call.invoke( new Object[] {MSN} );

                        if (ret instanceof String) {


System.out.println("Received problem response from server: "+ret);

                                    throw new AxisFault("",
(String)ret, null, null);

                        }

                        //stateQN = (QName) ret;

                        state = (State) ret;



                        status = state.getID();



appreciate whatever help provided.



thanks,

Jeff.






--
Davanum Srinivas : http://wso2.com/blogs/

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to