小编典典

如果服务器返回错误状态,java.net.HttpUrlConnection是否总是抛出IOException吗?

java

我正在使用 **java.net.HttpUrlConnection**
向我的服务器发出Http请求。我意识到,如果服务器返回错误状态(例如400)。HttpUrlConnection将抛出与错误状态相对应的IOException。

我的问题是: 如果服务器返回错误状态(4xx,5xx),HttpUrlConnection是否总是抛出IOException吗?

我看一下HttpUrlConnection
API描述,但无法回答我的问题。

更新:请查看我的测试:

public static void main(String[] args) {
    try {

        String url = "https://www.googleapis.com/oauth2/v3/userinfo?access_token=___fake_token";
        HttpURLConnection conn = (HttpURLConnection)new URL(url).openConnection();

        conn.getResponseCode();
        conn.getInputStream();

    } catch (Exception ex) {
        ex.printStackTrace();
        // Print IOException: java.io.IOException: Server returned HTTP response code: 401 for URL: https://www.googleapis.com/oauth2/v3/userinfo?access_token=abc

        // If I commented conn.getResponseCode() -> The same IOException
    }
}

谢谢!


阅读 215

收藏
2020-11-30

共1个答案

小编典典

如果您getResponseCode()之前进行过检查,getInputStream()而问题出在HTTP返回代码而不是连接错误,则不是这样。

2020-11-30