I wrote the following HttpClient code, and it did not result in an Authorization
header being sent to the server:
public static void main(String[] args) {
var client = HttpClient.newBuilder()
.authenticator(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("username", "password".toCharArray());
}
})
.version(HttpClient.Version.HTTP_1_1)
.build();
var request = HttpRequest.newBuilder()
.uri("https://service-that-needs-auth.example/")
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
}
I'm getting an HTTP 401 error from the service I'm calling. In my case, it's the Atlassian Jira Cloud API.
I have confirmed that my getPasswordAuthentication()
method is not being invoked by HttpClient.
Why isn't it working, and what should I do instead?