通过Web代理使用restful Web服务

时间:2010-06-11 15:04:22

标签: java rest webproxy

我正在尝试使用Apache Wink framework通过我的学校网络代理在java中使用一个安静的网络服务,需要验证

ClientConfig clientConfig = new ClientConfig();
clientConfig.proxyHost("proxy.school.com");
clientConfig.proxyPort(3128);
//nothing to set username and password :(

RestClient client = new RestClient(clientConfig);
Resource resource = client.resource("http://vimeo.com/api/v2/artist/videos.xml");
String response = resource.accept("text/plain").get(String.class);

我也尝试使用BasicAuthSecurityHandler,但它似乎用于直接向Web服务器验证,而不是Web代理

BasicAuthSecurityHandler basicAuthHandler = new BasicAuthSecurityHandler();
basicAuthHandler.setUserName("username");
basicAuthHandler.setPassword("password");
config.handlers(basicAuthHandler);

它仍然失败,出现HTTP 407错误代码:需要代理身份验证。

我已经用Google搜索了最好的东西,没有什么比通过网络代理从Java客户端使用网络服务更好了,如果有人有其他想法,请随时回复

2 个答案:

答案 0 :(得分:3)

好的,这很难,但我发现了!我使用Fiddler记录了我的浏览器发出的HTTP请求,并在阅读了RFC 2616等大量文档后发现Proxy-ConnectionProxy-Authorization是我要查找的内容关于HTTP / 1.1

所以我将正在发送的值复制粘贴到我的java代码中:

resource.header("Proxy-Connection", "Keep-Alive");
resource.header("Proxy-Authorization", "Basic encodedString");

其中encodedString是我的浏览器发送的内容:username:password base64 encoded

它现在完美无缺:)

答案 1 :(得分:1)

此问题是[1]引发的,此后通过添加Apache Wink客户端开发人员可用的ProxyAuthSecurityHandler解决了这个问题。

[1]:https://issues.apache.org/jira/browse/WINK-292 Apache Wink JIRA问题WINK-292