axis调用webservice服务

来源:互联网 发布:java字符串数组定义 编辑:程序博客网 时间:2024/05/19 01:14

之前用cxf调用webservice,当用wsdl2java转为本地java代码时报不支持cxf的错,搞了好久,弄不清楚是什么问题,到stackoverflow看才知道是版本的问题,只能由axis来调用了。示例代码如下:

import java.net.URL;import javax.xml.namespace.QName;import javax.xml.rpc.ParameterMode;import javax.xml.rpc.encoding.XMLType;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.xerces.xs.StringList;public class Test {      public static void main(String[] args) {            //soapaction是指wsdl的targetNamespace            String soapaction = "";            //你的webservice地址            String endpoint = "";            Service service = new Service();            try {                Call call = (Call) service.createCall();                call.setTimeout(new Integer(60000));                call.setTargetEndpointAddress(new URL(endpoint));                //你需要远程调用的方法                call.setOperationName(new QName(soapaction,"getxxxxx"));                //方法参数,如果没有参数请无视                call.addParameter(new QName(soapaction,"param1"), XMLType.XSD_STRING, ParameterMode.IN);                call.addParameter(new QName(soapaction,"param2"), XMLType.XSD_STRING, ParameterMode.IN);                call.addParameter(new QName(soapaction,"param3"), XMLType.XSD_STRING, ParameterMode.IN);                //设置返回类型                call.setReturnType(XMLType.XSD_STRING);                //调用方法并传递参数                String result = (String) call.invoke(new Object[]{"param1","param2","param3"});                System.out.println(result);            } catch (Exception e) {                e.printStackTrace();            }        }
原创粉丝点击