具有代理和增强功能的WS Client


问题内容

我知道这并不是问问题的正确方法,但是我遇到了问题:

我有一个本地存储的wsdl,我需要创建一个Web服务客户端来调用该Web服务。问题是服务位于防火墙后面,我必须通过代理连接到它,然后我必须进行身份验证才能连接到WS。

我所做的是使用Apache CXF 2.4.6生成WS Client,然后设置系统范围的代理

System.getProperties().put("proxySet", "true");
System.getProperties().put("https.proxyHost", "10.10.10.10");
System.getProperties().put("https.proxyPort", "8080");

我知道这不是最佳做法,因此,请提出一个更好的解决方案,如果有人可以给我提示如何设置身份验证,我将非常感谢


问题答案:

与apache CXF

HelloService hello = new HelloService();
HelloPortType helloPort = cliente.getHelloPort();
org.apache.cxf.endpoint.Client client = ClientProxy.getClient(helloPort);
HTTPConduit http = (HTTPConduit) client.getConduit();
http.getClient().setProxyServer("proxy");
http.getClient().setProxyServerPort(8080);
http.getProxyAuthorization().setUserName("user proxy");
http.getProxyAuthorization().setPassword("password proxy");