簡體   English   中英

如何在 cxf 客戶端中設置 https 代理?

[英]how to set https proxy in cxf client ?

我正在為我的網絡服務客戶端使用以下代碼:

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

但是我的網絡服務的結尾url是https url。這段代碼似乎只適用於http url。有沒有辦法為cxf客戶端設置https代理?

我沒有在文檔中看到配置 https 的方法

嘗試這個

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

因為 HTTP 代理(默認 cxf 值)只能用於處理 HTTP 流量(參見http://www.jguru.com/faq/view.jsp?EID=227532

您還需要知道您使用的代理服務器是否支持此協議。 要通過代理服務器獲得 HTTPS 連接,需要在代理上使用 HTTP CONNECT 查詢,然后連接通過代理建立隧道,因此證書驗證照常進行,就好像客戶端直接與終端服務器對話一樣

查看代理服務器上的 HTTPS 連接(您也可以使用 SSL bump 來充當像 Squid這樣的代理)

如果 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.proxyUser 和 http.proxyPassword

好的,所以代理很好。 我在策略和代理中設置了連接超時。 似乎 HTTP 客戶端沒有合並屬性,因為我們的代碼正在創建一個新策略 object 來設置超時而不是在同一個中設置。

解決了這個問題,它也適用於 https url。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM