具有webclient的以下实现:
public <T> WebClient.ResponseSpec sendRequest(HttpMethod method, String contentType, T body, String baseUrl, String path) {
try {
WebClient webClient = WebClient.builder().baseUrl(baseUrl).filter(logRequest()).build();
WebClient.ResponseSpec responseSpec = webClient.method(method)
.uri(path)
.header(HttpHeaders.CONTENT_TYPE, contentType)
.body(BodyInserters.fromObject(body))
.retrieve();
return responseSpec;
} catch (Exception e) {
throw new WebClientProcessingException("Exception when trying to execute request", e);
}
}
// This method returns filter function which will log request data
private static ExchangeFilterFunction logRequest() {
return ExchangeFilterFunction.ofRequestProcessor(clientRequest -> {
LOGGER.info("Request: {} {} {}", clientRequest.method(), clientRequest.url(), clientRequest.body());
clientRequest.headers().forEach((name, values) -> values.forEach(value -> LOGGER.info("{}={}", name, value)));
return Mono.just(clientRequest);
});
}
还有下面的代码,创建用户对象和包含用户对象的命令,然后调用webclient发送请求
@Autowired
private BaseWebClient baseWebClient;
@Override
public void saveOrUpdateUser() {
UserPayload userPayload = new UserPayload();
userPayload.setUserId(111L);
userPayload.setCreatedAt(ZonedDateTime.now(DateTimeProps.systemTimeZone));
UserCommand userCommand = new UserCommand();
userCommand.setUser(userPayload);
baseWebClient.sendRequest(HttpMethod.POST, "application/json",
Stream.of(userCommand).collect(Collectors.toList()),
"http://localhost:8080",
"/users").onStatus(HttpStatus::isError, clientResponse -> {
throw new WebClientUserSaveOrUpdateeFailedException("Exception when trying to update user state")
.bodyToMono(String.class);
});
}
用户有效载荷:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserPayload {
Long userId;
ZonedDateTime createdAt;
}
用户命令:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserCommand {
@JsonProperty("user")
UserPayload user;
}
Json正在等待我的另一个应用程序(我正在向其发送请求):
[
{ "user":
{
"userId": 1,
"createdAt": "2019-05-16T08:24:46.412Z"
}
}
]
使用:Spring boot 2、Lombok(用于getter/setter)、gradle当我试图发送请求时,什么都不会发生。也不例外。我试过用非常简单的案例来解决同样的问题。还有一点,可以记录尸体吗?我的意思是,不知怎的,我想我错过了一些一般性的东西。
在Reactor里,在你订阅之前什么都不会发生retrive()
实际上不会启动请求。正如您在示例中看到的,您应该使用以下方法之一将ResponseSpec转换为发布服务器,然后最终订阅该发布服务器。
根据您使用此方法的方式,您可能可以让Spring订阅发布服务器。WebFlux支持模型中的反应类型,这意味着您可以直接从RestController方法返回Mono。
请求方式: "|3|2|url,content|\r" 参数: url 设置Post请求的url链接 content post请求的数据 返回值: "|3|code|data|\r" 参数: code http请求返回的成功或者错误码 成功:code = 200 获取数据失败:code = -1 http请求字段错误:code = 1 data http请求返回的数据 Arduino样例: sof
我在网上找到了这个脚本: 但我不明白如何与PHP一起使用它,也不明白params变量内部的内容是什么,也不明白如何使用它。我能帮个忙吗?
问题内容: 我正在尝试发出POST请求,但无法完成。另一端什么也没收到。 这是应该如何工作的吗?我知道该功能,但我想我不能使用它,因为它不能用测试,对吗? 问题答案: 您基本上有正确的想法,只是发送错误的表格。该表格属于请求的正文。
如果我只在生产者端发送一条记录并等待,生产者何时将记录发送给经纪人?在Kafka文档中,我找到了名为“linger.ms”的配置,它说: 一旦我们得到 根据以上文件,我有两个问题。 > 如果生产者收到的数据达到batch.size,它会立即触发发送一个只包含一个批次的请求给代理?但是正如我们所知,一个请求可以包含许多批次,那么它是如何发生的呢? 这是否意味着即使是收到的数据也不足以批量处理。大小,
问题内容: 我想将我的网址发送到(和)。 我当前的请求代码不起作用。 使用是 不是 一个容易回答。 问题答案: 在iOS中发送和请求非常容易。无需其他框架。 请求: 首先,将我们的(按需发送的内容)创建为,然后将其转换为。 目标 接下来,我们阅读的,因此我们可以将其传递给请求。 现在我们有了要发布的内容,我们可以创建一个,并包含我们的。 迅速 最后,我们可以发送请求,并通过创建新的请求来阅读回复:
我正在尝试加载测试从存档数据库中获取记录的java servlet。 servlet的工作原理如下: 1-从HTTP头读取post变量 2-使用变量查询数据库 3-XML 我已经设置了一个测试,我想用post变量触发HTTP请求,但是测试不起作用,J Meter出现错误。 我已将CSV文件放在保存我的测试计划的同一文件夹中! 这是错误输出: 线程名称:线程组1-1示例开始时间:2012-11-20