泽西岛 - 版本1.14中的代理验证

时间:2012-09-13 14:52:28

标签: java jersey apache-httpclient-4.x

我正在尝试使用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类。

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

由于

2 个答案:

答案 0 :(得分:0)

尝试将其作为-D jvm参数提供。

答案 1 :(得分:0)

确定Jersey Apache客户端库和HttpComponents HttpClient库之间似乎存在依赖性问题。我使用了带有Jersey Apache Client库的Commons HttpClient库,它工作得很好。