1

我想使用 Spring Webflux 向 Paysafe 测试环境发出授权请求。我试过这个:

Mono<AuthorizeRequest> transactionMono = Mono.just(transaction);
        return client.post().uri("https://api.test.paysafe.com/cardpayments/v1/accounts/{id}/auths", "123456789")
                .header(HttpHeaders.CONTENT_TYPE, "application/json")
                .header(HttpHeaders.AUTHORIZATION, "Basic dGVz.......")
                .accept(MediaType.APPLICATION_JSON)
                .contentType(MediaType.APPLICATION_JSON)
                .body(transactionMono, AuthorizeRequest.class)
                .retrieve()
                .bodyToMono(AuthorizeResponse.class);

但我得到:

org.springframework.web.reactive.function.client.WebClientResponseException$BadRequest: 400 Bad Request
    at org.springframework.web.reactive.function.client.WebClientResponseException.create(WebClientResponseException.java:174)
    at org.springframework.web.reactive.function.client.DefaultWebClient$DefaultResponseSpec.lambda$createResponseException$15(DefaultWebClient.java:512)

你知道我怎么能解决这个问题吗?

4

2 回答 2

0

您发送请求以响应 http 状态代码 400 的服务器。这意味着您的请求似乎格式不正确。

例如,您可能忘记包含参数。

于 2019-09-14T16:10:24.547 回答
-1

400 Bad Request 可能有很多原因。要找出导致问题的确切原因,请尝试打印响应正文,如下所示:

.exchange()
                .flatMap(clientResponse -> {
                    if (clientResponse.statusCode().is5xxServerError()) {
                        clientResponse.body((clientHttpResponse, context) -> {
                            return clientHttpResponse.getBody();
                        });
                        return clientResponse.bodyToMono(String.class);
                    }
                    else
                        return clientResponse.bodyToMono(String.class);
                })
                .block();

这可以帮助您找到正确的原因,然后您可以修复

于 2021-11-29T07:44:43.647 回答