You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Merin Shaji <me...@gmail.com> on 2007/03/14 05:48:17 UTC

Invoking web service call

Hi,

I am trying to invoke a web service using axis client. I have written a java
client program making use of the class org.apache.axis.client.Call. Based on
that I could sent the request to my web service.

This is the request I got:

<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:addRecord xmlns:ns1=http://localhost:8888/ops/ws/test

        soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

            <logDate
xsi:type="xsd:string">2002-10-10T12:00:00-05:00</logDate>

            <name xsi:type="xsd:string">Hello20</name>

        </ns1:addRecord>

    </soapenv:Body>

</soapenv:Envelope>
Here <logDate> and <name> are my parameter tags. I want to embed this inside
a root tag named <devTest>.

I need to embed this whole data part inside a tag containing the operation
name addRecord.

This is my Java code:

  String retL = "";
  try{
   String endPoint = "http://localhost:8888/ops/ws/test";
   String operation = "addRecord";

   QName qOperation = new QName(endPoint, operation);
   QName qTest = new QName( "", "devTest" );

   URL urlPoint = new URL(endPoint);
   Object objArgs[] = new Object[] {"2002-10-10T12:00:00-05:00","Hello20"};
   Service service = new Service();
   Call call = (Call) service.createCall();
   call.setTargetEndpointAddress(urlPoint);
   call.setOperationName(qOperation);
   call.addParameter( "logDate", qTest, ParameterMode.IN );
   call.addParameter( "name", qTest, ParameterMode.IN );
   call.setReturnType (XMLType.XSD_STRING);
   retL=(String) call.invoke(objArgs);

  }catch (MalformedURLException e) {
   e.printStackTrace();
  } catch (RemoteException e) {
   e.printStackTrace();
  } catch (ServiceException e) {
   e.printStackTrace();
  }
  return retL;

This results in adding both the tags <logDate> and <name> under <addRecord>
which is the operation name.

But I need to add another root tag at a level above these two parameters so
that my request looks like this:

<addRecord>

    <devTest>

        <logDate>...</logDate>

        <name>...</name>

    </devTest>

</addRecord>
How can I achieve this through my axis client call?

Again, I have to use wrapped document literal style. What are the
modifications I have to make in my Java program to do this?

How can I avoid xsd: in my request?

Thanks & Regards
Merin