Java 使用ApacheCXF动态创建web服务客户端(修复未检查到的任何操作异常),通过身份验证调用操作

Java 使用ApacheCXF动态创建web服务客户端(修复未检查到的任何操作异常),通过身份验证调用操作,java,web-services,cxf,Java,Web Services,Cxf,所以我想找到一种通过身份验证动态调用web服务操作的方法 DynamicClientFactory dcf = DynamicClientFactory.newInstance(); Client client = dcf.createClient("WSDL Location"); AuthorizationPolicy authorization = ((HTTPConduit) client.getConduit()).getAuthorization();

所以我想找到一种通过身份验证动态调用web服务操作的方法

    DynamicClientFactory dcf = DynamicClientFactory.newInstance();
    Client client = dcf.createClient("WSDL Location");

    AuthorizationPolicy authorization = ((HTTPConduit) client.getConduit()).getAuthorization();

    authorization.setUserName(
            "user name"
    );

    authorization.setPassword(
            "password"
    );

    Object[] res = client.invoke(new QName("http://targetNameSpace/", "operationName"), params...);
    System.out.println("Echo response: " + res[0]);

这就是我发现的。

下面是一个示例,介绍如何使用apache cxf创建动态web服务客户端,避免“找不到名称的操作”未选中异常,并使用身份验证

    DynamicClientFactory dcf = DynamicClientFactory.newInstance();
    Client client = dcf.createClient("WSDL Location");

    AuthorizationPolicy authorization = ((HTTPConduit) client.getConduit()).getAuthorization();

    authorization.setUserName(
            "user name"
    );

    authorization.setPassword(
            "password"
    );

    Object[] res = client.invoke(new QName("http://targetNameSpace/", "operationName"), params...);
    System.out.println("Echo response: " + res[0]);
带有名称空间的新QName修复了异常


享受。

如果您仅为动态客户端使用cxf,这里是您需要的JAR列表:commons-logging-1.1、cxf-2.7.4、cxf-rt-ws-policy-2.7.4、HttpSyncClient-4.0-beta3、httpclient-4.2.1、httpcore-4.2.2、httpcore-nio-4.2.2、neethi-3.0.2、stax2-api-3.1.1.1、woodstox-core-asl-4.2.0、wsdl4j-1.6.3、Schema-XML2