HttpsURLConnection 身份验证器错误

Posted

技术标签:

【中文标题】HttpsURLConnection 身份验证器错误【英文标题】:HttpsURLConnection Authenticator Error 【发布时间】:2018-06-29 19:37:30 【问题描述】:

我在使用 Authenticator android Method 时遇到问题。

此方法有效并返回 200 代码 (HTTP_OK):

Authenticator.setDefault(new Authenticator() 
                protected PasswordAuthentication getPasswordAuthentication() 
                    return new PasswordAuthentication("admin", "1234".toCharArray());
                
            );

但是为了变得动态,我发送了用户值:

urlConnection = new URL(params[0]);
user = params[1];
pass = params[2];

将身份验证更改为:

return new PasswordAuthentication(user, pass.toCharArray())

做了一个测试: 用户/通过:“测试”。

我想收到 401 代码 (HTTP_UNAUTHORIZED)

当我调试并单击f7/f8时,有时我可以看到响应代码中的401,但我无法返回它,因为他似乎进入了一个循环内部:

httpUrlConnection.getResponseCode();

这是我的代码片段:

.....    

    httpUrlConnection.setConnectTimeout(2000);
    httpUrlConnection.connect();
    statusCode = httpUrlConnection.getResponseCode(); //debug stop here
    httpUrlConnection.disconnect(); 
 catch (IOException e) 
    e.printStackTrace();

return statusCode;

有什么建议吗?

【问题讨论】:

【参考方案1】:

问题出在服务器上。

认证方式为“Basic”。

将其更改为“Digest”,服务器只尝试一次身份验证,而不是递归直到可以登录。

编辑

但要注意,因为

HttpUrlConnection 不支持 here 指出的摘要

【讨论】:

以上是关于HttpsURLConnection 身份验证器错误的主要内容,如果未能解决你的问题,请参考以下文章

HttpClient 抛出 ssl 错误,但 webview 和 HttpsURLConnection 不会

HttpsURLConnection 的禁用证书验证仍然出现 javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure

Android:当密码错误时,带有 Authenticator 的 HttpsUrlConnection 将永远迭代(在 401 响应中)

远程连接Windows云服务器报错:出现身份验证错误,要求的函数不受支持

关于JAVA发送Https请求(HttpsURLConnection和HttpURLConnection)

windows远程连接报错--“发生身份验证错误。要求的函数不受支持”