问题标签 [spring-webclient]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
415 浏览

java - 在 Spring Framework 中使用 WebClient 调用 REST 时出错

我正在尝试使用 WebClient 进行 REST 调用,但是我无法传递请求正文。它显示错误 - 类型捕获#1-of 的方法 syncBody(body) 未定义?

它显示错误 - 类型捕获#1-of 的方法 syncBody(body) 未定义?

0 投票
2 回答
5215 浏览

rx-java - 如何测试 Spring WebClient 何时重试?

我需要实现以下行为:

  • 发出 REST 发布请求
  • 如果响应返回一个状态429 Too many requests,最多重试 3 次,延迟 1 秒
  • 如果第三次重试失败或发生任何其他错误,请记录并将内容写入数据库
  • 如果请求成功(http status 200),记录一些信息

我想为此目的使用 Spring WebClient 并提出以下代码:

现在我想测试一下重试机制和错误处理是否按我的预期工作。也许我可以为此目的使用StepVerifier,但我只是不知道如何在我的情况下使用它。有什么有用的提示吗?

0 投票
2 回答
745 浏览

spring - 如何在反序列化之前使用 java reactor webclient 打印 responseBody

我们计划从 spring Rest-Template 迁移到 Reactor-webclient。

使用 Rest-template,我们编写了自定义日志拦截器,在反序列化之前,我们使用 uniqueId 打印请求和响应。

现在 webclient 提供过滤器,但在过滤器中我无法访问 responseBody 来记录它。

我们有一些第三方 API,它们在错误的情况下发送字符串,在成功的情况下发送一些对象。在这种情况下,我迫不及待地在反序列化后记录响应,因为它会中断,我们将无法记录我们得到的响应。

0 投票
0 回答
203 浏览

spring-boot - 调用 MockWebServer 时无法访问 ExternalResource

我无法让MockWebServer正常工作。我将依赖项添加到 build.gradle

testImplementation 'com.squareup.okhttp3:mockwebserver:4.2.0'

我有以下课程(我从这里复制https://codingtim.github.io/webclient-testing/

我的测试课看起来像这样

但是,当我尝试运行测试时出现以下错误

ApiCallerTest.java:19:错误:无法访问 ExternalResource private final ApiCaller apiCaller = new ApiCaller(WebClient.create(mockWebServer.url("/").toString()));

知道可能出了什么问题吗?

0 投票
2 回答
3797 浏览

spring-boot - Spring Webclient:非法参数异常没有足够的变量来扩展“comment_count”

我正在使用 spring webclient 使用包含 {comment_count} 的 url 发出 Facebook 图形 api 请求

但是,得到这个例外

代码片段:

我知道resttemplate的解决方案,但我需要使用spring webclient。

0 投票
1 回答
127 浏览

reactor-netty - Spring 5 的 Reactive WebClient 不是那么异步?

我遇到了奇怪的 Spring WebClient 行为。我有两个网址,慢的和快的。机器人什么都不做,但慢一点,只需等待十秒钟即可响应。当我使用 WebClient 同时调用它们时,我希望快速 URL 会比慢速 URL 更早完成,但实际上它们都是同时完成的。最糟糕的是 - 有时它会按预期工作。有没有人想过,为什么它会以这种方式运行,以及如何使它正常工作?这是我的例子

结果(大多数情况下)

在极少数情况下,它会按预期工作

0 投票
3 回答
4727 浏览

reactive-programming - 如何在反应式 Spring WebClient 调用的错误部分引发异常?

如果发生错误,我希望以下方法引发自定义异常:

我还设置了一个单元测试,期望抛出 CustomException。不幸的是,测试失败了,异常被包裹在一个 Mono 对象中。这里还有测试代码供参考:

我正在使用MockWebServer来模拟测试中的错误。

那么,如果调用,我应该如何实现 doOnError 或 onError 部分,以使我的方法真正抛出异常?

0 投票
0 回答
1012 浏览

java - 使用 WebClient 时是否可以避免调用 CONNECT 修改 HTTP 代理配置?

在 to 的迁移过程spring-webspring-reactive-web,我们被HTTP proxyat WebClientbuilder 方法的实现阻塞了。

我们之前已经尝试过下面的代码片段,在How can I support an HTTP Proxy using Spring 5 WebClient? .

对于上面提到的需要启用 TLS 的代理支持的代码。它尝试使用 HTTP-Connect 方法建立连接,对于我们的情况,我们得到了status: 403 Forbidden,因为我们现在没有 https 支持。要禁用 httpClient 的 HTTPS 功能,我什至尝试过noSSL(),但它对我不起作用,

无论我尝试从 HTTP 客户端启用还是禁用 SSL 部分,网络活动时间线看起来都是一样的,我的意思是对于所有情况,当我使用代理时它都会调用 HTTP CONNECT 方法。

在此处输入图像描述

下面的代码看起来不错,可以帮助我们很好地调用 API,但没有找到任何将HTTP_PROXY (Without HTTP CONNECT method call)配置与其关联的标准方法。

在这里,我们正在寻找一种使用 WebClient 实现 HTTP 调用机制的标准方法,该 GET方法使用 WebClient 考虑特定于域的, , ,POST用于PUT某些后端调用。DELETESOCKET_TIMEOUTCONNECTION_TIMEOUTHTTP_PROXY (Without HTTP CONNECT method call)Number of RETRY

对于依赖部分,我们的 WebClient 的有效版本来自, Gradle: org.springframework:spring-web:5.1.7.RELEASE

如果您对此有任何进一步的疑问,请随时在下面发表评论。

0 投票
1 回答
272 浏览

spring-boot - 向外部 API 发送发布请求并提取数据

我希望在我的代码中模仿以下发布请求:

理想情况下,我会得到的 JSON 响应是这样的

{“数据”:{“id”:“111”,“标识符”:“test1”,“秘密”:“秘密”}}

我正在尝试使用 WebClient 来构建这样的请求

我收到错误

org.springframework.web.reactive.function.client.WebClientResponseException$BadRequest: 400 错误请求

这样做......我哪里错了?还有一种更有效的方式来发送这样的请求吗?我无法理解如何正确使用 Mono。

0 投票
2 回答
16503 浏览

spring-boot - Spring Boot Webclient 的检索与交换

我最近开始WebClient在我的Spring Boot项目中使用。有人可以exchangeretrieve.WebClient

我知道exchange返回Mono<ClientResponse>retrieve返回ResponseSpec,我只想知道何时/为什么应该使用它们中的每一个。

非常感谢。