Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jersey-版本1.14中的代理验证操作_Java_Jersey_Apache Httpclient 4.x - Fatal编程技术网

Java Jersey-版本1.14中的代理验证操作

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

我正在尝试为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);

        }
}
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参数传递,但不知何故,如果代理需要身份验证,它就无法工作。知道为什么吗?