别人提供一个wsdl时 你需要根据这个wsdl写一个java方法实现调用这个接口,得到接口返回的结果。
例如别人提供的wsdl如下:注意其中圈住的部分
需要注意的是: 1、命名空间:targetNamespace 即此服务在服务端的包路径 2、此接口中包含的方法 这里调用getNeResult方法
package com.erlei;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class CXFClient {
public static void main(String[] args) {
//都是固定的套路
try{
Service service = new Service();
Call call = null;
call = (Call) service.createCall();
call.addParameter("number", org.apache.axis.encoding.XMLType.XSD_STRING,ParameterMode.IN);
call.setUseSOAPAction(true);
call.setTargetEndpointAddress(new java.net.URL("http://localhost:8090/JSGoduConnection/HSS?wsdl"));
call.setOperationName(new QName("http://starit.com/", "getNeResult"));
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
String ret = (String) call.invoke(new Object[]{"18551661111"});
System.out.println("返回报文" + ret);
}catch(Exception e){
e.printStackTrace();
}
}
}
java工程即可,至少需要以下几个jar包:
axis.jar,jaxrpc.jar,commons-logging.jar,commons-discovery-0.2.jar,wsdl4j.jar
OK,就这么简单。