IOException:“收到的身份验证质询为空”(Apache Harmony/Android)

2022-09-01 06:38:23

我正在尝试通过Android的HttpURLConnection(从org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection导入)发送GET,并在收到响应时,抛出IOException

in doRequestInternal(): “收到的身份验证质询为空”

此错误是什么意思,导致此错误的原因是什么?我正在将OAuth参数写入授权标头,但我在其他情况下也这样做,没有问题。

    if (connection == null) {
        connection = (HttpURLConnection) new URL(endpointUrl).openConnection();
        connection.setRequestMethod("GET");
    }

    //... do some OAuth message signing

    connection.connect();

    int statusCode = connection.getResponseCode(); // throws IOException

答案 1

我找到了原因。

首先,对于所有不知道此错误含义的人(我肯定不是):如果服务器使用401回复,则会引发此异常。非常直观,考虑到它是在getResponseCode()中抛出的(即你永远无法自己检查401,但必须抓住这个IOException...)。

401的真正原因是我没有在此时预期的位置发送OAuth验证器代码。


答案 2

也许会对某人有用...

此异常仅表示格式错误的应答标头:找不到“WWW-Authenticate”标头。此外,不支持包含 401 代码的分块答案,因此您需要“Content-Length”标头(可以是零)。


推荐