java - HttpClient 4.2、基本身份验证和 AuthScope

标签 java httpclient apache-httpclient-4.x apache-commons-httpclient

我有一个连接到需要基本身份验证的站点的应用程序。这些站点在运行时提供,在编译时未知。

我正在使用 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);

最佳答案

AuthScope.ANY 是您所追求的:http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/auth/AuthScope.html

试试这个:

    final HttpClient client = new HttpClient();
    client.getParams().setAuthenticationPreemptive(true);
    client.getState().setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(user.getUsername(), user.getPassword()));
    final GetMethod method = new GetMethod(uri);
    client.executeMethod(method);

关于java - HttpClient 4.2、基本身份验证和 AuthScope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10850114/

相关文章:

Java Attach API : changing java. library.path 动态

android - 使用 MultipartEntity 构建 POST 请求

java - 用于删除用户/参与者的 JIRA Rest API DELETE 调用不会删除用户

java - 使用 Apache HTTP 客户端将 Tomcat Web 应用程序的 keystore 放在哪里

java - 不推荐使用 HttpMethod getResponseBodyAsString 但为什么

java - 删除时权限不足

java - hadoop在reducer中获取最大值

java - 当我们有 UrlConnection 时为什么要使用套接字

java - HttpClient 发布请求 URL 的问题,Java 中没有变化

spring-boot - 如何在 tomcat 9.0.14 的 Spring Boot REST 应用程序中同时启用 http1.1 和 http2.0