我正在使用一个Web服务,该Web服务在我的身份验证cookie过期时返回401,这会导致HttpUrlConnection引发此错误:

java.io.IOException: No authentication challenges found
    at libcore.net.http.HttpURLConnectionImpl.getAuthorizationCredentials(HttpURLConnectionImpl.java:427)
    at libcore.net.http.HttpURLConnectionImpl.processAuthHeader(HttpURLConnectionImpl.java:407)
    at libcore.net.http.HttpURLConnectionImpl.processResponseHeaders(HttpURLConnectionImpl.java:356)
    at ...

我知道这种情况正在发生,因为服务器没有返回WWW-Authenticate标头,但这是我无法控制的。 HttpUrlConnection为我做此检查很高兴,但这是真实世界,我们并不总是能够使用完全遵循HTTP规范的服务器。由于其他代码依赖性,我无法离开HttpUrlConnection,那么如何禁用该检查,才能真正利用响应?

最佳答案

您可以尝试捕获错误。

try{
     //code that causes error
}
catch(IOException ex){
    if(ex.getMessage().equals("No authentication challenges found")){
        //handle error
    }
}

10-05 17:49