httpclient API 401
时间: 2023-08-01 10:08:41 浏览: 45
回答: 当使用HttpClient API时,如果遇到401错误,表示未经授权或身份验证失败。在这种情况下,你需要提供有效的身份验证凭据才能访问受保护的资源。你可以使用HttpClient的CredentialsProvider类来提供身份验证凭据。以下是一个示例代码片段,演示如何使用HttpClient API进行身份验证:
```java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpHeaders;
import java.net.http.HttpResponse.BodyHandlers;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class HttpClientExample {
public static void main(String\[\] args) throws Exception {
String username = "your_username";
String password = "your_password";
// 创建一个CredentialsProvider并提供身份验证凭据
HttpClient client = HttpClient.newBuilder()
.authenticator(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password.toCharArray());
}
})
.build();
// 创建一个GET请求
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com/api/resource"))
.build();
// 发送请求并获取响应
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
// 检查响应状态码
if (response.statusCode() == 200) {
// 请求成功
String responseBody = response.body();
System.out.println(responseBody);
} else if (response.statusCode() == 401) {
// 身份验证失败
System.out.println("Authentication failed. Please check your credentials.");
} else {
// 其他错误
System.out.println("Something went wrong. Status code: " + response.statusCode());
}
}
}
```
在上面的示例中,我们创建了一个CredentialsProvider并提供了用户名和密码。然后,我们使用这个CredentialsProvider创建了一个HttpClient实例,并在发送请求之前将其设置为Authenticator。这样,HttpClient将使用提供的凭据进行身份验证。如果身份验证失败,我们可以根据响应的状态码进行相应的处理。
#### 引用[.reference_title]
- *1* *2* *3* [5-5 HttpClient api的讲解](https://blog.csdn.net/weixin_48514431/article/details/117262762)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]