Merge branch 'dev' into test

This commit is contained in:
chenbowen
2025-11-06 23:10:34 +08:00

View File

@@ -112,8 +112,17 @@ public class HttpStepHandler implements ApiStepHandler {
Map<String, String> headerMap = resolveHeaders(stepDefinition, payload);
Duration timeout = resolveTimeout(stepDefinition);
WebClient client = webClientBuilder.build();
WebClient.RequestHeadersSpec<?> requestSpec = buildRequest(client, callSpec, requestPayload, headerMap, supportsBody);
Mono<Object> responseMono = requestSpec.retrieve().bodyToMono(Object.class);
final HttpRequestPayload resolvedPayload = requestPayload;
boolean finalSupportsBody = supportsBody;
Mono<Object> responseMono = Mono.defer(() -> {
// 每次订阅(含重试)都会重新构建请求,避免缓存第一次结果
HttpRequestPayload payloadForAttempt = resolvedPayload == null
? HttpRequestPayload.of(null, Collections.emptyMap())
: resolvedPayload;
return buildRequest(client, callSpec, payloadForAttempt, headerMap, finalSupportsBody)
.retrieve()
.bodyToMono(Object.class);
});
responseMono = applyResilientRetry(responseMono, stepDefinition);
Object response = timeout == null ? responseMono.block() : responseMono.block(timeout);
payload.addStepResult(ApiStepResult.builder()