0

我正在尝试使用 Jersey Rest 客户端的身份验证配置代理设置。最初,我使用以下代码与不需要身份验证的代理一起正常工作

ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);

但是,如果代理需要身份验证,则它不起作用。我尝试使用来自 HttpComponents 项目的 Jersey Apache http 客户端和 HttpClient 4.2.1 以及以下代码片段。

final ApacheHttpClientConfig config = new DefaultApacheHttpClientConfig();
Map<String, Object> configProp =  config.getProperties();
final String proxyHost = System.getProperty("http.proxyHost");
final String proxyPort = System.getProperty("http.proxyPort");

if(proxyHost != null && proxyPort != null){
        configProp.put(DefaultApacheHttpClientConfig.PROPERTY_PROXY_URI, "http://" + proxyHost + ":" + proxyPort);

        final String proxyUser = System.getProperty("http.proxyUser");
        final String proxyPassword = System.getProperty("http.proxyPassword");
        if(proxyUser != null && proxyPassword != null){
             ApacheHttpClientState state = config.getState();
             state.setProxyCredentials(AuthScope.ANY_REALM, proxyHost, Integer.parseInt(proxyPort), proxyUser, proxyPassword);

        }
}

它在 config.getState() 处引发“ClassNotFoundException”错误。看起来 HttpClient 中 Credentials 类的路径已更改,并且泽西 Apache Http Client 找不到 Credentials 类。

所以,我的问题是“在最近版本的泽西岛或泽西岛一般有不同的处理代理身份验证的方法吗?我做错了吗?”

谢谢

4

2 回答 2

0

尝试将其作为-Djvm 参数。

于 2012-09-14T05:50:31.200 回答
0

Ok There seems to be a dependency problem between Jersey Apache Client library and HttpComponents HttpClient library. I used Commons HttpClient library with Jersey Apache Client library and it worked perfectly fine.

于 2012-10-15T23:05:54.100 回答