我正在尝试使用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类。
所以,我的问题是“在最新版本的泽西岛或泽西岛中,是否有不同的处理代理身份验证的方式?我做错了吗?”
由于
答案 0 :(得分:0)
尝试将其作为-D
jvm参数提供。
答案 1 :(得分:0)
确定Jersey Apache客户端库和HttpComponents HttpClient库之间似乎存在依赖性问题。我使用了带有Jersey Apache Client库的Commons HttpClient库,它工作得很好。