【问题标题】:Spring RestTemplate getForObject getting 404Spring RestTemplate getForObject 得到 404
【发布时间】:2018-01-16 04:04:38
【问题描述】:

我正在尝试向 Api Rest 发出 get 请求,但总是收到 404,但是如果尝试在浏览器或 postMan 中复制 queryUrl,它会完美运行。

restTemplate.getForObject(queryUrl, entity ,Integer.class);

我也试过这个:

HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.setContentType(MediaType.APPLICATION_JSON); HttpEntity 实体 = 新 HttpEntity(httpHeaders); log.debug("请求头:" + entity.getHeaders()); ResponseEntity 响应 = restTemplate.exchange(queryUrl, HttpMethod.GET, 实体, String.class);

但没有任何改变。 谁能帮帮我?

【问题讨论】:

  • 先用 postman 或 ARC 试试端点,然后用代码检查
  • 正如我在 Postman 上一篇文章中所说的那样完美运行,这对我来说很奇怪。感谢您的回复
  • 没有太多信息,我们无能为力..您的用法是正确的。可能您可以分享一些网址以确保一切正常,或者分享一个示例屏幕截图即可完成的工作邮递员。

标签: java spring rest http


【解决方案1】:

这花了我一点时间才弄明白,所以我会在这里留下一个小便条,希望有一天它对某人有所帮助。 使用 ResTemplate.getForEntity(URL, Type) 发出获取请求时,我一直收到 404。该 URL 在 Chrome、Postman 中有效,但在我的代码中无效。 最终是因为我的 URL 中有一个unsafe character,确切地说是一个 %,因为我的 URL 有空格,所以 URL 有 %20 而不是空格。 Postman 和 Chrome 可以处理这个问题,但我的代码不行。一旦我用一个实际的空间替换了不安全的字符,一切都很好。

希望它也适合你。

【讨论】:

    【解决方案2】:

    你说得对,Barath 的用法是正确的。问题是 UriComponentBuilder 在 URL 的末尾包含了一个空格。

    我已经修好了。

    字符串 queryUrl = UriComponentsBuilder.fromUriString(HOST) .path(路径) .buildAndExpand(参数) .toUriString().trim();

    【讨论】:

      【解决方案3】:

      当你的 url 包含“%”时,你应该使用 restTemplate.getForObject(new URI(url),xx.class),它对我有用。

      【讨论】:

        猜你喜欢
        • 2020-07-23
        • 1970-01-01
        • 1970-01-01
        • 2019-12-21
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 2014-08-04
        • 1970-01-01
        相关资源
        最近更新 更多