WebClient 的 bodyToMono 错误

我正在使用 Spring 5 WebClient 进行外部 api 调用,并希望将响应映射到这样的对象:


@Data

@JsonIgnoreProperties(ignoreUnknown = true)

public static class Response {

    private long length;

}


private Mono<Response> getResponse() {

    return webClient.get()

            .uri("someURI")

            .accept(MediaType.APPLICATION_JSON_UTF8)

            .retrieve()

            .bodyToMono(Response.class);

}

但我收到一个错误:


org.springframework.web.reactive.function.UnsupportedMediaTypeException: Content type 'application/octet-stream' not supported

但是,如果我像这样将响应正文提取到字符串中:


private Mono<String> getResponse() {

return webClient.get()

        .uri("someURI")

        .accept(MediaType.APPLICATION_JSON_UTF8)

        .retrieve()

        .bodyToMono(String.class); 

}

然后它可以正常工作。任何想法如何解决这个问题?


守着星空守着你
浏览 939回答 1
1回答

九州编程

如果 HTTP 响应没有Content-Type标头,则客户端将假定application/octet-stream,这不是 Spring WebFlux 中的 Jackson 编解码器支持的 Content-Type。因此,您看到的行为是预期的行为,并且应该修复 Web API 以添加响应标头。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java