1、使用axis调用wsdl服务,代码如下:
String endPoint = "http://127.0.0.1:8081/demo/services/example/HelloWorld?wsdl";//完整的wsdl地址 Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(endPoint); // WSDL里面描述的接口名称(要调用的方法) call.setOperationName(new QName("http://example/","sayHelloWorldFrom"));//需加上new QName(), 直接call.setOperationName("sayHelloWorldFrom");这样不行,QName里第一个参数就是wsdl服务里的targetNamespace // 接口方法的参数名, 参数类型,参数模式 IN(输入), OUT(输出) or INOUT(输入输出) call.addParameter("arg0", XMLType.XSD_STRING, ParameterMode.IN);//参数默认是从arg0开始,刚开始测试没有返回值,一直找问题,发现问题在这里 // 设置被调用方法的返回值类型 call.setReturnType(XMLType.XSD_STRING); call.setUseSOAPAction(true); //设置方法中参数的值 Object[] paramValues = new Object[]{"rhyhhg6"}; // 给方法传递参数,并且调用方法 String result = (String) call.invoke(paramValues); System.out.println("result is " + result);
执行结果如下: