Java HTTP摘要身份验证使用'失败;400个错误请求';过了一会儿

Java HTTP摘要身份验证使用'失败;400个错误请求';过了一会儿,java,wildfly,httpurlconnection,digest-authentication,Java,Wildfly,Httpurlconnection,Digest Authentication,我对Java客户机上的HTTP摘要身份验证有问题。我正在Wildfly上运行一个Web服务(SOAP)客户端,但是如果我使用URL.openConnection(),也会出现同样的问题。失败的部分是底层的sun.net.www.protocol.http.HttpURLConnection及其身份验证处理。我正在通过java.net.Authenticator设置凭据 java.net.Authenticator.setDefault(new java.net.Authenticator

我对Java客户机上的HTTP摘要身份验证有问题。我正在Wildfly上运行一个Web服务(SOAP)客户端,但是如果我使用URL.openConnection(),也会出现同样的问题。失败的部分是底层的sun.net.www.protocol.http.HttpURLConnection及其身份验证处理。我正在通过java.net.Authenticator设置凭据

    java.net.Authenticator.setDefault(new java.net.Authenticator() {
        @Override
        protected java.net.PasswordAuthentication getPasswordAuthentication() {
            return new java.net.PasswordAuthentication("username", "password");
        }
    });

    URL url = new URL(requestUri);

    HttpURLConnection conn = (HttpURLConnection) url.openConnection(Proxy.NO_PROXY);
    conn.setRequestMethod("GET");
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    while (rd.readLine() != null) { }
    rd.close();
最初一切都运行良好,但几周后,所有HTTP调用都从服务器获得响应“400错误请求”。如果我重新启动JVM,所有调用都会再次工作。我能想到的唯一一件事是,服务器认为摘要身份验证有问题(例如不正确的nonce计数器),并使用HTTP 400进行响应。HttpURLConnection(或者实际上是Authenticator?)不将HTTP 400理解为失败的身份验证,并继续使用相同的身份验证令牌。重新启动JVM后,调用会自然地请求新的服务器nonce,并从0启动nonce计数器,然后一切都会重新工作

有什么我能做的吗?我做错什么了吗?我是否可以强制底层JRE实现将HTTP 400理解为失败的身份验证,或者强制客户端为所有请求请求新的服务器nonce

我请求的服务器是MS Dynamics NAV。我的应用程序的另一部分是使用ApacheHTTP客户端向同一服务器发出类似的HTTP请求,没有任何问题

更新
我在运行Oracle服务器JRE 8u152

您在运行时使用哪个Java版本和发行版?我在运行服务器JRE 8u152您在运行时使用哪个Java版本和发行版?我在运行服务器JRE 8u152