使用axis实现一个webservice客户端

  创建一个webservice客户端具体的操作就是我们如何把参数以xml报文的格式正确的传递给指定URL和方法的webservice服务端。

  下面是具体的过程。

  首先我们先实例化一个可以调用webservice的Call:

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;

public String WsClient(){
    Call call; 
    Service webService = new Service();
call = (Call) webService.creatCall(); }

  然后我们需要为这个call指定请求的地址和方法以及返回的格式:

public String WsClient(){
    ...
call.setTargetEndpointAddress(
new java.net.URL(URL));//参数URL为给定的服务端地址
call.setOperationName(
new QName(namespaceURI,localPart,perfix)); //namespaceURI为服务端URI,localPart为请求的方法名 call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型
call.setSOAPActionURI("xxx");//如果不需要通过soapAction header寻找对应的方法,可忽略 }

  setOperationName()方法的参数也可以是String,这时参数是对应的localPart,即方法名。QName()的构造参数也可以只有localPart,此时另外两个参数是默认值,分别为XMLConstants.NULL_NS_URI和XMLConstants.DEFAULT_NS_PREFIX,都为空字符串。

  给call添加参数:

public String WsClient(){
    ...
    call.addParameter(new QName(namespaceURI,paramname1),XMLType.XSD_STRING,ParameterMode.IN);
call.addParameter(new QName(namespaceURI,paramname2),XMLType.XSD_STRING,ParameterMode.IN);
call.addParameter(new QName(namespaceURI,paramname3),XMLType.XSD_STRING,ParameterMode.IN);
... }

  其中参数paramname是参数的名称。paramname1、paramname2、paramname3等参数中有一个是拼组的xml报文格式的字符串。

  最后一步,调用:

public String WsClient(){
    ...
    String result = (String)call.invoke(new Object[] {paramname1,paramname2,paramname3});
}

  result即为服务端返回的结果。

  

  

猜你喜欢

转载自www.cnblogs.com/OnceAgain/p/9228421.html