axis调用webservice

 前面这篇文章记录了webservice的发布以及两种方式通过cmd命令生成客户端==>传送门。这里记录一下通过axis调用webservice。调用的webservice还是上篇文章发布的。导入依赖如下:

    
        org.apache.axis
        axis
        1.4
    
    
        org.apache.axis
        axis-jaxrpc
        1.4
    
    
        commons-discovery
        commons-discovery
        0.5
    
    
	wsdl4j
	wsdl4j
	1.6.2
    

话不多说,代码如下:

package com.eastcom.webClient;

import javax.xml.namespace.QName;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.message.RPCElement;
import org.apache.axis.message.RPCParam;

public class AxisClient {
    public static void main(String[] args){
	    Object responseInfo = null;
	    Service service=new Service();
            Call call=null;
            try {
		 call = (Call) service.createCall();
        
                //SOAPHeaderElement el1 = new SOAPHeaderElement("这里具体是什么看情况咯");
	        //需要验证就要添加header了
                //call.addHeader(el1);

		//设置服务地址
		 call.setTargetEndpointAddress("http://localhost:8080/Dom4j_AxisDemo/service/hello");
		//namespace:targetNamespace,看wsdl  methodName:方法名 
		 RPCElement rpcElement = new RPCElement("http://ws.eastcom.com/","sayHello",null);
		//QName(namespaceURI:targetNamespace,可不写,如果发布的方法参数设置了,就必须加上了,localPart:参数名字,由服务方法定义,@WebMethod|@WebParam都可以定义,未定义就是arg0)
		//yb:传入参数
		 RPCParam rpcParam = new RPCParam(new QName("","arg0",""),"yb");
		 rpcElement.addParam(rpcParam);
		//调用得到返回结果
		 responseInfo = call.invoke(rpcElement);
	    } catch (Exception e) {
		 e.printStackTrace();
	    }
        System.out.println("====="+responseInfo);
    }
}

结果:

axis调用webservice_第1张图片

上面注释里说的 targetNamespace , arg0 都可以在wsdl里面找到,下面简单圈一下,这里推荐一篇介绍wsdl的博文,个人觉得写得很好,对wsdl里面内容不是很了解的同学建议看一下==>传送门

axis调用webservice_第2张图片

 

你可能感兴趣的:(webservice)