Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果服务器返回错误状态,java.net.HttpUrlConnection是否总是抛出IOException?_Java_Exception_Httpurlconnection_Http Status Codes - Fatal编程技术网

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

如果服务器返回错误状态,java.net.HttpUrlConnection是否总是抛出IOException?,java,exception,httpurlconnection,http-status-codes,Java,Exception,Httpurlconnection,Http Status Codes,我正在使用java.net.HttpUrlConnection向我的服务器发出Http请求。我意识到如果服务器返回错误状态(例如400)。HttpUrlConnection将引发与错误状态对应的IOException 我的问题是:如果服务器返回错误状态(4xx,5xx),HttpUrlConnection是否总是抛出IOException? 我查看了API描述,但无法回答我的问题 更新:请查看我的测试: public static void main(String[] args) { t

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

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

我查看了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
    }
}

谢谢大家!

如果在
getInputStream()
之前选中
getResponseCode()
,问题是HTTP返回代码而不是连接错误,则不会出现问题。

如果在
getInputStream()
之前选中
getResponseCode()
,问题是HTTP返回代码而不是连接错误,则不会出现问题。

我包括了一个测试。我在getInputStream之前调用getResponseCode,得到IOException。请看我的例子@Loc在这两种情况下,
getInputStream()
都会引发异常。您的新示例无效,因为您忽略了
getResponseCode()
的结果。如果您像我假设的那样正确编程,您会看到值是401,并且根本没有尝试调用
getInputStream()
。我现在明白了。非常感谢。我包括了一个测试。我在getInputStream之前调用getResponseCode,得到IOException。请看我的例子@Loc在这两种情况下,
getInputStream()
都会引发异常。您的新示例无效,因为您忽略了
getResponseCode()
的结果。如果您像我假设的那样正确编程,您会看到值是401,并且根本没有尝试调用
getInputStream()
。我现在明白了。非常感谢。HTTP错误401-未经授权:由于凭据无效,访问被拒绝。如果以下条件为真,则会发生此行为:尝试查看的网站使用集成的Windows身份验证。网站的应用程序池在身份验证过程中回收。HTTP错误401-未经授权:由于凭据无效,访问被拒绝。如果以下条件为真,则会发生此行为:尝试查看的网站使用集成的Windows身份验证。网站的应用程序池在身份验证过程中回收。