Web services 如何使用ApacheCXF创建具有基本身份验证的动态webservice客户端?

Web services 如何使用ApacheCXF创建具有基本身份验证的动态webservice客户端?,web-services,dynamic,tdd,cxf,basic-authentication,Web Services,Dynamic,Tdd,Cxf,Basic Authentication,我想用TDD开发一个SOAP web服务。该web服务构建在Apache CXF上,并通过基本身份验证进行保护。我的想法是在动态客户端的帮助下设置单元测试,以避免代理的创建过程 文档显示了如何创建动态客户端: 好的,看起来很有希望。但是如何为基本身份验证指定用户名和密码?WSDL和服务本身都受到基本身份验证的保护 再见, Olaf我已经查看了ApacheCXF的源代码。我认为当前版本的CXF(2.3.1)无法从受基本身份验证保护的URL检索WSDL。通常以以下方式创建动态客户端: JaxWsDy

我想用TDD开发一个SOAP web服务。该web服务构建在Apache CXF上,并通过基本身份验证进行保护。我的想法是在动态客户端的帮助下设置单元测试,以避免代理的创建过程

文档显示了如何创建动态客户端:

好的,看起来很有希望。但是如何为基本身份验证指定用户名和密码?WSDL和服务本身都受到基本身份验证的保护

再见,

Olaf

我已经查看了ApacheCXF的源代码。我认为当前版本的CXF(2.3.1)无法从受基本身份验证保护的URL检索WSDL。通常以以下方式创建动态客户端:

JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient(
    "http://localhost:8080/ws-auth/EchoService?wsdl");
不幸的是,您将得到ServiceConstructionException作为回报:

org.apache.cxf.service.factory.ServiceConstructionException: 
Could not resolve URL "http://localhost:8080/ws-auth/EchoService?wsdl".
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.composeUrl(DynamicClientFactory.java:6)
...
我找不到任何位置来设置基本身份验证的凭据。作为一种解决方法,我可以在第二个工具(可能是httpclient)的帮助下下载WSDL并将其存储在临时文件夹中。CXF可以使用这个文件,并在创建客户端时使用它。我试过这种方法,但没有成功。出现了另一个例外。这并不奇怪,因为我无法找到如何将凭据移交给动态创建的客户端。apachecxf的文档可以更广泛

坦率地说,我不确定apachecxf是否是完成这项任务的最佳选择。有人知道一种工具或框架可以支持以简单的方式测试SOAP Web服务吗?正如我前面提到的,它应该通过解析WSDL动态创建服务代理。也许在java世界之外还有可行的解决方案。Ruby或者Python是如何处理这个问题的?也许我可以通过在单元测试中使用JRuby或Jython来采用他们的方法

org.apache.cxf.service.factory.ServiceConstructionException: 
Could not resolve URL "http://localhost:8080/ws-auth/EchoService?wsdl".
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.composeUrl(DynamicClientFactory.java:6)
...