2015-04-24 62 views
7

我正在使用Jersey 2.4.1進行休息,並希望通過HTTP和HTTPS代理進行GET或Post調用。我無法做到。我在互聯網上搜索,發現很多鏈接,但現在大部分鏈接已經過時。一些幫助將是非常有幫助的,因爲從Jersey 1.X到2.X有很多變化。Jersey 2.0通過代理獲取帖子

這是我的代碼,使GET調用(這是工作正常)。我想修改它以通過HTTP和HTTPS代理進行此調用。任何指針都會有幫助。

javax.ws.rs.core.Response response = null; 
Client client = ClientBuilder.newClient(); 
WebTarget target = client.target(url); //url is string 
response = target.request().header("Authorization", header).accept(javax.ws.rs.core.MediaType.APPLICATION_JSON).get(); 
+0

[試試這個](http://stackoverflow.com/a/18995077/2587435) –

+0

我需要處理http和https代理。這不處理這個。你能提供一些我可以同時處理http和https代理的解決方案嗎? – learner

+0

這應該正是你所需要的 - https://jersey.java.net/documentation/latest/client.html#d0e5070 – Gyan

回答

0

嘗試使用ClientConfiguration對象,設置所需的任何屬性,然後使用ClientBuilder.withConfig(Configuration config)設置配置。然後你可以使用build()方法來構建它。 看一看這個例子:

ClientConfig cc = new ClientConfig(); 
cc.property(ClientProperties.PROXY_URI, "8.8.8.8:80"); 
Client client = JerseyClientBuilder.withConfig(cc).build(); 

這並不然而,僅支持HTTP代理工作。 要設置您需要設置系統屬性,像這樣一個HTTPS代理:瞭解更多信息

System.setProperty("http.proxyHost", "some.proxy"); 
System.setProperty("http.proxyPort", "3476"); 
System.setProperty("https.proxyHost", "some.https.proxy"); 
System.setProperty("https.proxyPort", "6235"); 

this

+0

但是這樣我只能設置http代理。什麼是Https代理? – learner

+0

@learner球衣不提供任何設置https代理。你可以嘗試設置整個jvm的代理。看看我的編輯 – Distjubo

0

代理將驅使瘋狂。我遇到了很多Proxy的問題。我將在代理服務器中執行以下檢查env

檢查#1:
由於這是GET請求。將請求URL直接放入Web瀏覽器或CURL中。如果你有答覆。然後與你的代碼有關。否則,您需要在系統網絡設置中修復代理設置。

檢查#2:
如果您使用的是Eclipse IDE,則需要在Eclipse中修復代理設置。
http://www.mkyong.com/web-development/how-to-configure-proxy-settings-in-eclipse/

而且您需要使用Proxy URL設置ClientBuilder。

https://gist.github.com/qerub/5877919 (使用代理從屬性文件的網址)。

希望它的工作。