Java Jersey-版本1.14中的代理验证操作
我正在尝试为Jersey Rest客户端配置具有身份验证的代理设置。最初,我使用的代码可以很好地处理不需要身份验证的代理Java Jersey-版本1.14中的代理验证操作,java,jersey,apache-httpclient-4.x,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 Apa
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);
}
}
final ApacheHttpClientConfig=new DefaultApacheHttpClientConfig();
Map configProp=config.getProperties();
最后一个字符串proxyHost=System.getProperty(“http.proxyHost”);
最后一个字符串proxyPort=System.getProperty(“http.proxyPort”);
如果(proxyHost!=null&&proxyPort!=null){
configProp.put(DefaultApacheHttpClientConfig.PROPERTY_PROXY_URI,“http://“+proxyHost+”:“+proxyPort”);
最后一个字符串proxyUser=System.getProperty(“http.proxyUser”);
最后一个字符串proxyPassword=System.getProperty(“http.proxyPassword”);
if(proxyUser!=null&&proxyPassword!=null){
ApacheHttpClientState=config.getState();
state.setProxyCredentials(AuthScope.ANY_REALM,proxyHost,Integer.parseInt(proxyPort),proxyUser,proxyPassword);
}
}
它在config.getState()处抛出“ClassNotFoundException”错误。HttpClient中凭据类的路径似乎已更改,Apache Http客户端无法找到凭据类
所以,我的问题是“在Jersey或Jersey的最新版本中,是否有不同的方式处理代理身份验证?我做错了吗?”
谢谢尝试将其作为
-D
jvm参数提供。好的,Jersey Apache客户端库和HttpComponents HttpClient库之间似乎存在依赖性问题。我将Commons HttpClient库与Jersey Apache客户端库一起使用,它工作得非常好。我将代理参数作为-D jvm参数传递,但不知何故,如果代理需要身份验证,它就无法工作。知道为什么吗?