1. 程式人生 > 實用技巧 >cxf動態呼叫web service時新增basic驗證

cxf動態呼叫web service時新增basic驗證

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 static
String 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 = new
AuthorizationPolicy(); 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(); } } }