Apache HttpClient基本身份验证示例
时间: 2024-02-04 19:03:36 浏览: 31
Apache HttpClient是一个非常流行的Java HTTP客户端库。它支持基本身份验证(Basic Authentication),该身份验证方案要求用户提供用户名和密码以访问受保护的资源。
以下是一个使用Apache HttpClient进行基本身份验证的示例代码:
```java
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
public class BasicAuthExample {
public static void main(String[] args) throws IOException {
// 创建 HttpClient 实例
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(
// 认证范围
new AuthScope("localhost", 8080),
// 认证凭据
new UsernamePasswordCredentials("username", "password"));
CloseableHttpClient httpclient = HttpClients.custom()
.setDefaultCredentialsProvider(credsProvider)
.build();
try {
// 创建 HttpGet 请求
HttpHost target = new HttpHost("localhost", 8080, "http");
HttpGet httpget = new HttpGet("/");
System.out.println("Executing request " + httpget.getRequestLine() + " to target " + target);
// 执行请求
CloseableHttpResponse response = httpclient.execute(target, httpget);
try {
// 获取响应实体
HttpEntity entity = response.getEntity();
System.out.println("----------------------------------------");
System.out.println(response.getStatusLine());
if (entity != null) {
System.out.println("Response content length: " + entity.getContentLength());
System.out.println(EntityUtils.toString(entity));
}
EntityUtils.consume(entity);
} finally {
response.close();
}
} finally {
httpclient.close();
}
}
}
```
在此示例中,我们首先创建了一个 `CredentialsProvider` 对象,该对象包含要用于身份验证的用户名和密码。然后,我们使用 `HttpClients.custom()` 方法创建一个 `CloseableHttpClient` 实例,并将 `CredentialsProvider` 对象设置为默认凭据提供程序。最后,我们执行 HTTP GET 请求并处理响应实体。
请注意,我们需要指定要进行身份验证的范围(即主机名和端口号)。在本例中,我们将其设置为“localhost”和“8080”,但您应该将其替换为适当的值。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)