package com.example.demo;
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.configuration.security.AuthorizationPolicy;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.apache.cxf.transport.http.HTTPConduitConfigurer;
import org.apache.cxf.transport.http.auth.DefaultBasicAuthSupplier;
import org.apache.cxf.transport.http.auth.HttpAuthSupplier;
import java.io.IOException;
/**
* @ClassName: CxfClient
* @Author: bo
* @Description:
* @Date: 2020/11/20 13:09
* @Version: 1.0
*/
public class CxfClient {
private static String url = ""; // wsdl访问路径
private static String method = ""; // 方法名
private static ASN objects = null; //访问参数
private static String username = null; //用户名
private static String password= null; //密码
public static void main(String[] args) {
Bus bus = BusFactory.getThreadDefaultBus();
bus.setExtension((name, address, httpConduit) -> {
final AuthorizationPolicy authorization = new AuthorizationPolicy();
authorization.setUserName(username);
authorization.setPassword(password);
httpConduit.setAuthorization(authorization);
final HttpAuthSupplier supplier = new DefaultBasicAuthSupplier();
httpConduit.setAuthSupplier(supplier);
}, HTTPConduitConfigurer.class);
JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance(bus);
Client client = factory.createClient(url);
System.out.println("动态客户端创建完成");
try {
Object[] invoke = client.invoke(method, objects);
System.out.println(invoke[0]);
} catch (Exception e) {
e.printStackTrace();
}
}
}