Web Services 如何在cxf客户端设置https代理?

tct7dpnv  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(202)

我正在为我的Web服务客户端使用以下代码:

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");

但是我的webservice的结束url是一个https url,这段代码似乎只对http url起作用,有没有办法为cxf客户端设置https代理?

hmae6n7t

hmae6n7t1#

我没有在文档中看到配置https的方法
试试这个

http.getClient().setProxyServerType (ProxyServerType.SOCKS)

因为HTTP代理(默认cxf值)只能用于处理HTTP流量(请参阅http://www.jguru.com/faq/view.jsp?EID=227532
您还需要知道您使用的代理服务器是否支持此协议。要通过代理服务器获得HTTPS连接,需要在代理上使用HTTP CONNECT查询,然后连接通过代理进行隧道传输,因此证书验证照常进行,就像客户端直接与终端服务器对话一样
请参阅HTTPS connections over proxy servers(您也可以成为Squid using SSL bump之类的代理)
如果SOCKS不起作用,请尝试使用系统属性在JDK级别配置https代理。请参见javadoc https://docs.oracle.com/javase/8/docs/technotes/guides/net/proxies.html

System.setProperty("https.proxyHost", host)

  System.setProperty("https.proxyPort", port) //probably 443

同时设置http.代理用户和http.代理密码

l3zydbqr

l3zydbqr2#

好的,代理是好的。我在策略和代理中设置了连接超时。似乎HTTP CLIENT没有合并属性,因为我们的代码创建了一个新的策略对象来设置超时,而不是在同一个中设置。
解决了这个问题,它与https网址也工作得很好。

相关问题