import java.io.IOException;
import java.net.Authenticator;
import java.net.PasswordAuthentication;
import java.net.URL;
import java.net.HttpURLConnection;
public class Main {
public static void main(String[] args) throws IOException {
String url = "https://api.example.com/endpoint";
String username = "your-username";
String password = "your-password";
EsbAuth esbAuth = new EsbAuth(username, password);
Authenticator.setDefault(esbAuth);
URL apiUrl = new URL(url);
HttpURLConnection connection = (HttpURLConnection) apiUrl.openConnection();
// 发送请求并处理响应
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
// 处理成功响应
} else {
// 处理失败响应
}
connection.disconnect();
}
static class EsbAuth extends Authenticator {
private final String username;
private final String password;
public EsbAuth(String username, String password) {
this.username = username;
this.password = password;
}
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password.toCharArray());
}
}
}
在这个示例中,我们创建了一个 EsbAuth 类作为 Authenticator 的子类,并在构造函数中接收账号和密码。在 getPasswordAuthentication 方法中,我们返回一个 PasswordAuthentication 对象,该对象包含了账号和密码。
在 main 方法中,我们创建了一个 EsbAuth 实例,并通过 Authenticator.setDefault() 方法将其设置为默认的 Authenticator。然后,我们打开一个 HttpURLConnection 并发送请求。
您需要将 url 替换为要调用的实际接口地址,并将 username 和 password 替换为相应的凭据。
通过这种方式,您可以使用自定义的 EsbAuth 类进行基本认证,并将其设置为默认的 Authenticator,以在发送请求时自动添加基本认证标头。请注意,Authenticator 是 Java 标准库中的类,不依赖于任何特定的 HTTP 客户端库。