当前位置: 首页 > 面试题库 >

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

司空坚
2023-03-14
问题内容

我正在使用 **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
    }
}

谢谢!


问题答案:

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



 类似资料:
  • 我正在使用java.net.HttpUrlConnection向我的服务器发出Http请求。我意识到如果服务器返回错误状态(例如 400)。HttpUrlConnection 将抛出与错误状态对应的 IOException。 我的问题是:如果服务器返回错误状态(4xx,5xx),HttpUrlConnection是否总是抛出IOException? 我看了一下HttpUrlConnection A

  • 问题内容: 如果我运行查询,例如: 即使查询与任何记录都不匹配,它也会始终返回结果吗?还是我需要验证并确保结果返回一行? 问题答案: 是的,因为它是一个聚合并且返回零。除非您添加GROUP BY,否则由于没有组,因此没有结果… 除非您添加GROUP BY,然后没有任何行,否则MAX / SUM等将返回NULL。只有COUNT传回没有结果的数字 编辑,有点晚:SUM会像MAX一样返回NULL 编辑,

  • 我有一个。net.ashx处理程序,它接收jQuery AJAX post,格式化向第三方服务发送的web服务请求,并使用结果。成功后,它将使用相关信息实例化匿名对象,并格式化JSON响应字符串。 如果出现web服务错误,我将执行以下操作: 这使得jQuery AJAX错误回调可以轻松地访问状态代码和描述;然而,我实现这一点的方式是相当武断的。 在对以下问题进行了一些阅读之后,我找不到一个结论性的

  • 问题内容: 在这里提供一些答案并阅读了一些评论之后,看来,实际上IOException永远不会对文件I / O抛出异常。 在任何情况下,在Stream / Reader / Writer上进行close调用实际上会引发IOException吗? 如果实际引发异常,应该如何处理? 问题答案: 对于文件,可能不会在close()上经常抛出IOException,但是对于非文件I / O,您肯定会看到它

  • 我在路径“/test”中有一个无用的endpoint: 我这样测试: 但我得到一个断言错误: 预期状态代码 这发生在更多的代码中:400,500...除了200。 我用的是Spring靴。如果在运行测试时在endpoint方法中放置断点,则执行将停止,因此测试中的请求将正确完成。如果我将状态代码(在资源和测试中也是)更改为200,则测试通过。 到底发生了什么?