gpt4 book ai didi

java - 摘要认证 java.net.http.HttpClient

转载 作者:行者123 更新时间:2023-12-05 05:36:39 24 4
gpt4 key购买 nike

我正在尝试连接到受摘要身份验证保护的网站。如果我尝试通过 Insomnia 或 Firefox 登录,我的凭据可以正常工作,但我无法在 Java 17 中使用它(Insomnia 自动生成的代码也不起作用)。

我尝试遵循并理解以下教程/文档:

https://www.baeldung.com/java-9-http-client

https://docs.oracle.com/javase/7/docs/technotes/guides/net/http-auth.html

据我所知,两者都提到支持 Digest。

当摘要验证失败时,我得到的结果总是状态码 401 和预期的 header :

www-authenticate=[Digest realm="api-realm", qop="auth", nonce="NONCE=="

这是当前代码。 getPasswordAuthentication 方法未执行:

public void checkIsAPIRunning() {

HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://the-site-I-try-to-connect-with:443/api/function"))
.method("GET", HttpRequest.BodyPublishers.noBody()).build();
HttpResponse<String> response = null;
try {
response = HttpClient.newBuilder().authenticator(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("user", "pass".toCharArray());
}
}).build().send(request, BodyHandlers.ofString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

我是否误解了文档?我将不胜感激任何帮助或指点:)

最佳答案

新的 HttpClient 不直接支持摘要式身份验证 - 请参阅此处:https://bugs.openjdk.org/browse/JDK-8285888

看来您应该自己处理身份验证过程。

关于java - 摘要认证 java.net.http.HttpClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73264239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com