- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,我有一个像这样公开的 REST URL:
@PostMapping("/check/existence")
@ResponseBody
public Map<String, MyObjectDto> checkExistence() {
//some code
然后,我有一个带有 Spring WebClient 的消费者,就像这样:
ClientResponse response = webclient.post().uri....
我想做这样的事情:
Map<String, MyObjectDto> responseDto =
response.bodyToMono(Map.class).block();
但控制台返回给我
java.util.LinkedHashMap cannot be cast to org.mypackage.MyObjectDto
那么,我怎样才能使用像 Map<String, MyObjectDto>
这样类型的 map 呢? ?
最佳答案
来自documentation类(class) ParameterizedTypeReference<T>
The purpose of this class is to enable capturing and passing a generic Type. In order to capture the generic type and retain it at runtime, you need to create a subclass (ideally as anonymous inline class) as follows:
当您需要将某些东西序列化/反序列化为使用泛型的类型时(例如 Map
你不能使用
response.bodyToMono(Map.class)
这样一来,spring 就不知道你想把什么类型实际放入 Map 中了。你要输入一个int吗?一个字符串?一个东西?它不知道。
因此您需要提供包含类型信息的内容。
bodyToMono(new ParameterizedTypeReference<Map<String, MyObjectDto>>() {})
ParameterizedTypeReference
是一个匿名类,它将为您保存您的类型信息。因此,当我们将类传递给通用函数 bodyToMono 时,该类就像一个容器来保存您的类型信息,这样 spring 就可以查看该对象的内容并确定您想要使用的类型。
关于java - 如何使用 Spring ClientResponse 使用 Map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64170975/
我正在尝试获取列表的结果,基本上是使用 Jersey RESTful API(服务器和客户端)的实体列表 UserRESTClient client = new UserRESTClient(); C
为什么我需要发布 ClientResponse: response.releaseConnection(); 有优势吗?为什么 RestEasy 不处理这个? 有时我必须释放它,有时我没有 - 这是
我有一个 REST端点为 @GET @Produces(MediaType.APPLICATION_JSON) public Response getVariables(@QueryParam("_a
我正在尝试实现 BodyExtractor 接口(interface),从 Mono 获取主体作为对象,而不是在 Mono 中获取主体。 我找不到 BodyExtractor 实现的任何示例。我想知道
我在使用 jeresy ClientRespone.getEntity 反序列化时遇到问题 我尝试遵循一些教程和问题,包括: http://jersey.576304.n2.nabble.com/Ho
首先,我有一个像这样公开的 REST URL: @PostMapping("/check/existence") @ResponseBody public Map checkExis
我正在尝试在 REST 服务器和调用客户端应用程序之间编写一种代理,以便通过向 REST 调用添加属性来强制隐私。 我不想检查来自服务器的响应,我只想将它传递给客户端。 我想用 spring-webf
如何从 Response.class 中获取资源 URI 路径/位置?当我像这样使用 Apache CXF 客户端 API 调用我的 Restful 服务时: Response res = reso
我觉得我错过了一些东西。我有一个过滤器,可以打印出服务器返回的信息,并且我报告我正在返回正确的响应(403)。我编写了一个 JUnit 测试来验证这个逻辑,很多时候我报告 200 而不是 403。奇怪
我目前正在使用 Resteasy 2.3.6.Final 并想升级到 Resteasy 3.0.4.Final。然而,API doc表示该类现在已弃用。所以我的问题是: ClientResponse
我目前正在使用 Jersey 作为代理 REST api 来调用另一个 RESTful 网络服务。一些调用将在我的服务器中以最少的处理来回传递。 有没有办法干净地做到这一点?我正在考虑使用 Jerse
我有这个 Jersey 网络资源代码: @Override public int Foo(long uId, String secretKey, long tileId) {
我在模拟 com.sun.jersey.api.client.ClientResponse 时遇到了一些问题,但只有在我设置 .type(MediaType.MULTIPART_FORM_DATA_T
我使用 jersey-client 来使用 REST 服务。我需要请求的实体和 Last-Modified header 。 所以我做了以下事情: ClientResponse response =
我正在尝试使用 Jersey 客户端调用 REST 服务(不使用 Jersey/JAX-RS)。以下代码可以很好地发布我的表单数据并接收响应: Form form = new Form();
我正在使用响应式编程的代码库中尝试来自 Spring 5 (5.0.0.RC2) 的新 WebClient,并且我已成功将 JSON 响应从端点映射到我的应用程序中的 DTO,效果非常好: WebCl
我有一个 Web 应用程序,它执行身份验证,然后检查请求中的 cookie 以允许来自同一客户端的后续调用。我写了一段代码,当我从 eclipse 运行它时它工作得很好,但是当从 android 模拟
我有一个基本的java项目,其中我已经在我的java构建中从外部导入了jersey-client-1.19.jar(使用eclipse)。我正在尝试编写一个基本的 Jersey 客户端来对 Web 服
我是 Spring Reactive 框架的新手,并尝试将 Springboot 1.5.x 代码转换为 Springboot 2.0。我需要在 Spring 5 WebClient ClientRe
我正在尝试使用 jersey 客户端通过 Web 服务获取 PreRegisterJsonResponse 对象,方法是将 preRegisterId 作为路径变量发送到服务,并在高级 REST 客户
我是一名优秀的程序员,十分优秀!