cxf動態呼叫web service時新增basic驗證
阿新 • • 發佈:2020-11-27
package com.mobiwire.crm; 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 staticString url = ""; // wsdl訪問路徑 private static String method = ""; // 方法名 private static ASN objects = null; //訪問引數 public static void main(String[] args) { Bus bus = BusFactory.getThreadDefaultBus(); bus.setExtension((name, address, httpConduit) -> { final AuthorizationPolicy authorization = newAuthorizationPolicy(); authorization.setUserName(HmdLoginInterceptor.username); authorization.setPassword(HmdLoginInterceptor.password); httpConduit.setAuthorization(authorization); final HttpAuthSupplier supplier = new DefaultBasicAuthSupplier(); httpConduit.setAuthSupplier(supplier); }, HTTPConduitConfigurer.class); JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance(bus); Client client = factory.createClient(url); client.getEndpoint().getOutInterceptors().add(new HmdLoginInterceptor()); System.out.println("-------"); try { Object[] invoke = client.invoke(method, objects); System.out.println(invoke[0]); } catch (Exception e) { e.printStackTrace(); } } }