【问题标题】:org.springframework.web.client.HttpClientErrorException: 401 nullorg.springframework.web.client.HttpClientErrorException: 401 null
【发布时间】:2019-08-12 13:13:43
【问题描述】:

我正在从一个模块调用服务到另一个模块。但它会引发异常:

org.springframework.web.client.HttpClientErrorException: 401 null

对“http://localhost:80../.../...Report”的 POST 请求导致 401 (空值);调用错误处理程序。

我可以直接从邮递员那里获得这项服务。 但是当它从 spring boot 模块调用时,它会抛出错误。

BaseResponseDTO baseResponseDTO = restTemplate.postForObject("http://localhost:80../.../...Report", requestDTO, BaseResponseDTO.class);

在这一行抛出错误

【问题讨论】:

  • 那是真实的网址还是您对其进行了清理?请注意,401 是未经授权的错误,您是否在 Postman 中有一个(特殊)cookie 可以使请求在那里成功?
  • 我没有在这个问题中给出整个网址。在邮递员中,我在标题中传递授权令牌。同时从模块令牌调用 url 也随之发送。我也在为其他模块使用相同类型的代码。但我不知道为什么它不起作用。而且我也没有得到 401 Unauthorized。我得到 401 null。
  • 能否将您用于发送授权令牌的代码粘贴到代码中?另外,为 org.springframework.web.client 包启用调试模式,这应该会有所帮助
  • 授权令牌正在内部传递给第一个模块,因为我正在获得访问权限。从这个模块它不会移动到下一个模块,这里我不需要再次设置令牌。因为我已经被授权了。我也使用相同的方式连接其他模块。只有我在这方面面临错误。

标签: java spring-boot resttemplate


【解决方案1】:
I added authorization headers in MultiValueMap and i added object request in HttpEntity. here i added code.

MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
headers.add("Authorization", "bearer "+<TOKEN>);
HttpEntity<MyObject> httpEntityRequest = new HttpEntity<>(myObjectReference, headers);

BaseResponseDTO baseResponseDTO = restTemplate.postForObject("http://localhost:80../.../...Report", httpEntityRequest , BaseResponseDTO.class);

【讨论】:

  • 我遇到了同样的错误。问题出在 Auth Header Only 上,但是我使用了 restTemplate.exchange 而不是 postForObject
猜你喜欢
  • 1970-01-01
  • 2017-02-22
  • 1970-01-01
  • 2016-10-27
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多