当前位置: 首页 > 知识库问答 >
问题:

RestTemplate引发异常而不是返回500?[副本]

韦志新
2023-03-14

我正在使用org。springiframework。网状物客户RestTemplate用于一些Java测试,以编写一些新代码的单元测试。我预计这些调用会失败(我正在测试身份验证)

调用不是返回预期的401代码,甚至不是500代码,而是抛出异常org.springiframework.web.client.HttpServerErrorException$InternalServerError

电话是这样的:

try {
    e  = restTemplate.exchange("https://myserver.local:8090/findByThread/100000", HttpMethod.GET, new HttpEntity(headers), Map.class, 100000L);
    assertNotEquals(200, e.getStatusCode().value());
} catch(Exception ex) {
    logger.info("Error");
    ex.printStackTrace();
}

我怀疑我错过了一些非常明显的东西,但我不知道它是什么。这难道不应该简单地返回一个状态代码=401的实体响应吗?

共有1个答案

朱保赫
2023-03-14

我实际上在这里找到了一个解决方案:当抛出RestClientException时,如何检索HTTP状态代码和响应正文?

显然,抛出异常而不是返回响应“常规方式”正是它的工作方式。我不明白。通过捕获HttpClientErrorException并查看字段rawStatusCode,我能够确定我得到了预期的401。

感谢大家对此的帮助,您的快速响应是无价的。StackOverflow是一个很好的资源。

 类似资料:
  • 我有一个 asp.net MVC 2 Web 应用程序在所有中间层控制器操作中,我捕获所有异常,记录,然后重新抛出异常。此重写由 JQuery Ajax 错误处理程序拾取 我正在通过JQuery进行一个ajax调用,如下所示 出于某种原因,jqXHR。responseText不再返回任何内容,我在解析responseText时遇到错误。我认为这可能是IIS设置,因为我们最近切换到新的Web服务器。

  • 问题内容: 我正在使用一个API,该API声称如果成功则返回true,如果失败则返回false。但是,它也声称如果失败,则抛出不同的异常。它如何返回false并引发异常? 问题答案: 不能从单个函数调用中引发异常并返回值。 如果发生错误,它可能会执行类似返回的操作,但是如果输入无效,则会引发异常。 编辑:PaulPRO发布了一个(现已删除)答案,指出从 技术上讲, 有可能在返回当前值时在另一个线程

  • 我希望在数据库中找不到该项时出现异常

  • 我在一个基于XML的spring上下文文件中定义了一个骆驼上下文。有一条路由正在由SOAP(XML)web服务客户端bean调用。在调用路由时,它抛出一些异常,客户端接收到骆驼异常,而不是原始异常。 Camel在异常时对客户端的响应如下所示 预期响应应该是任何异常的原始异常消息 这是我的骆驼路线定义 我尝试使用camel onException但没有成功:(

  • 输出为 为什么第一行返回true,而第二行返回false?这里有什么诀窍,因为两者都在类上调用。

  • 我正在尝试使用HttpWebRequest验证Url的存在。我发现了一些基本上这样做的示例: 但是,如果url确实损坏了,它不会返回响应,而是抛出异常。 我将代码修改为: 这似乎终于做到了我想要的。 但是我想知道,为什么请求会抛出异常,而不是返回带有NotFindstatus代码的响应?