- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个 ClientResponse
在测试中并使用它来测试服务,该服务也以标准方式进行反序列化 response.bodyToMono(..class..)
。但我建立虚假客户响应的方式似乎有问题。因为我收到 UnsupportedMediaTypeException
正在测试中。
尽管如此,当 WebClient 返回 ClientResponse
时,相同的代码在运行时 SpringBoot 应用程序中工作正常。 (这是内部构建的)。
让我们看看失败的最简单的情况
org.springframework.web.reactive.function.UnsupportedMediaTypeException:
Content type 'application/json' not supported for bodyType=java.lang.String[]
<小时/>
void test()
{
String body = "[\"a\", \"b\"]";
ClientResponse response = ClientResponse.create(HttpStatus.OK)
.header(HttpHeaders.CONTENT_TYPE,
MediaType.APPLICATION_JSON_VALUE)
.body(body)
.build();
String[] array = response.bodyToMono(String[].class).block();
assertEquals(2, array.length);
}
请帮助我理解应该如何构建客户端响应以允许在测试环境中进行标准(json -> 对象)反序列化。
最佳答案
手动创建的ClientResponse
无权访问默认列表中的Jackson2Json
交换策略。也许可以使用 Spring 自动配置进行配置,在没有 Spring 上下文的测试中将其关闭。
这是强制(反)序列化 String <-> json 的直接方法:
static ExchangeStrategies jacksonStrategies()
{
return ExchangeStrategies
.builder()
.codecs(clientDefaultCodecsConfigurer ->
{
clientDefaultCodecsConfigurer.defaultCodecs().jackson2JsonEncoder(new Jackson2JsonEncoder(new ObjectMapper(), MediaType.APPLICATION_JSON));
clientDefaultCodecsConfigurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(new ObjectMapper(), MediaType.APPLICATION_JSON));
}).build();
}
然后在create
函数中使用它
ClientResponse.create(HttpStatus.OK, jacksonStrategies())...
关于java - 如何在Spring测试环境中反序列化ClientResponse主体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60830961/
我正在尝试获取列表的结果,基本上是使用 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 客户
我是一名优秀的程序员,十分优秀!