java HttpClient 4.2、基本身份验证和AuthScope
我有一个应用程序连接到需要基本身份验证的站点。这些站点是在运行时提供的,在编译时是未知的
我正在使用HttpClient 4.2
我不确定下面的代码是否是我应该如何指定基本身份验证的,但文档会建议这样做。但是,我不知道在AuthScope
的构造函数中传递什么。我原以为null参数意味着提供的凭证应该用于所有URL,但它抛出了一个NullPointerException
,所以显然我错了
m_client = new DefaultHttpClient();
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(m_userName, m_password);
((DefaultHttpClient)m_client).getCredentialsProvider().setCredentials(new AuthScope((HttpHost)null), credentials);
# 1 楼答案
AuthScope。任何都是你想要的:http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/auth/AuthScope.html
试试这个:
# 2 楼答案
至少从版本4.2.3(我想在版本3.X之后),接受的答案不再有效。相反,请执行以下操作:
JavaDoc for
AuthScope.ANY
说,在未来版本的HttpClient中,此参数的使用将停止,因此使用此参数的风险由您自己承担。更好的选择是使用AuthScope
中定义的构造函数之一有关如何使请求先发制人的讨论,请参阅:
Preemptive Basic authentication with Apache HttpClient 4