Spring Webflux Webclient |内容类型标题设置问题

Posted

技术标签:

【中文标题】Spring Webflux Webclient |内容类型标题设置问题【英文标题】:Spring Webflux Webclient | Content type headers set issue 【发布时间】:2019-08-22 09:52:38 【问题描述】:

我设置标题的方式如下:

import org.springframework.web.reactive.function.client.WebClient;

WebClient webClient = WebClient.create();
webClient.post().uri(url)
        .headers(httpHeaders -> httpHeaders.setAll(headersMap))
        .body(BodyInserters.fromFormData(HelperMethods.mapToMultiValueMap(body))).exchange();

它适用于某些服务,但我在添加自定义标头基础要求时遇到问题。

为了设置内容类型,我在 headersMap 的标题中添加了以下内容(headersMap 是一个 Map):(“Content-Type”,“application/json”)

但它给了我错误:“HTTP 标头行 ["Content-Type": "application/json"] 不符合 RFC 7230 并已被忽略"

这可能是什么原因造成的?我尝试发送内容类型,例如:(“content-type”,“application/json”),但错误是一样的。

我无法使用“.contentType()”在请求中设置标头,因为标头的数量是可变的,在 headersMap 中动态设置。

【问题讨论】:

【参考方案1】:

您正在发送内容类型指向 json 的表单数据(通常为 Content-Type: multipart/form-data) - 发送正确的 JSON 或将您的标头更改为适合表单数据。

【讨论】:

以上是关于Spring Webflux Webclient |内容类型标题设置问题的主要内容,如果未能解决你的问题,请参考以下文章

Spring WebFlux WebClient 弹性和性能

Spring 5 webflux如何在Webclient上设置超时

在 Spring WebFlux webclient 中设置超时

Spring Webflux WebClient

如何模拟 Spring WebFlux WebClient?

如何在 Spring 5 WebFlux WebClient 中设置超时