1.首先使用CXF的客户端,需要引入相应的依赖包
<properties>
<cxf.version>2.7.18</cxf.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>${cxf.version}</version>
</dependency>
</dependencies>
2.添加完依赖后进行动态调用
/**
* 参数为对象实体
*/
public static void pojoCxfClient(){
// 创建动态客户端
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
//此处创建成功客户端会在控制台打印创建的动态对象,如:com.***.test
Client client = dcf.createClient(testUrl);//testUrl为webservice的地址
try {
//通过反射,创建参数对象,com.***.test 这个包名称必须和webservice的中的参数路径一致
Object order = Thread.currentThread().getContextClassLoader().
loadClass("com.***.test").newInstance();
//通过反射获得赋值方法
Method m1 = order.getClass().getMethod("setId", String.class);
Method m2 = order.getClass().getMethod("setName", String.class);
//赋值
m2.invoke(order, "2d1232ce-1a0f-465b-b4e8-6c839a9c9e56");
//开始调用
Object[] objects = client.invoke("methodName", order);//methodName接口的方法名
System.out.println("调用对象形式参数返回数据:" + objects[0]);
} catch (java.lang.Exception e) {
e.printStackTrace();
}
}