MultiValueMap<String, String> body_data = new LinkedMultiValueMap();
body_data.add("param1", {param1});
...
WebClient webClient = WebClient.builder().baseUrl(api_url+request_url)
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_FORM_URLENCODED_VALUE)
.build();
String result = webClient.post().contentType(MediaType.APPLICATION_FORM_URLENCODED)
.bodyValue(BodyInserters.fromFormData(body_data)).retrieve().bodyToMono(String.class).block();
它回来了
org.springframework.web.reactive.function.client.WebClientRequestException: Content type 'application/x-www-form-urlencoded' not supported for bodyType=org.springframework.web.reactive.function.BodyInserters$DefaultFormInserter; nested exception is org.springframework.web.reactive.function.UnsupportedMediaTypeException: Content type 'application/x-www-form-urlencoded' not supported for bodyType=org.springframework.web.reactive.function.BodyInserters$DefaultFormInserter
对此有什么建议吗?内容类型应为application/x-www-form-urlencoded。
我们可以使用插入器。fromFormData为此:
WebClient client = WebClient.builder()
.baseUrl("SOME-BASE-URL")
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_FORM_URLENCODED_VALUE)
.build();
return client.post()
.uri("SOME-URI)
.body(BodyInserters.fromFormData("username", "SOME-USERNAME")
.with("password", "SONE-PASSWORD"))
.retrieve()
.bodyToFlux(SomeClass.class)
.onErrorMap(e -> new MyException("messahe",e))
.blockLast();
另一种形式:
MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
formData.add("username", "XXXX");
formData.add("password", "XXXX");
String response = WebClient.create()
.post()
.uri("URL")
.contentType(MediaType.APPLICATION_FORM_URLENCODED)
.body(BodyInserters.fromFormData(formData))
.exchange()
.block()
.bodyToMono(String.class)
.block();
我一直在尝试找出一种在Azure API管理正文中POST Content-Type Application/x-www-form-urlencoded的方法。 我成功地在Postman中实现了它,因为它支持x-www-form-urlencoded,但似乎找不到在API管理中实现它的方法。无论我在哪里以及如何尝试在API管理中发布正文,它都会给出一个错误:解析请求时出错。所需格式:{token:
spring-cloud-starter-openfeign 2.1.1.发行版 我还尝试添加假表单依赖项和@param而不是@requestparam,但没有成功。
在java中,如何使用。我不明白如何发送带有键值的正文,如上面的屏幕截图所示。 我尝试过以下代码: 但是在回复中,我没有收到正确的数据。
问题内容: 我有一些要以表单编码形式发布到服务器的参数: 我正在这样发送我的请求(当前没有参数) 如何在请求中包含表单编码的参数? 问题答案: 对于上载表单编码的POST请求,我建议使用FormData对象。 示例代码:
我有一些参数,我想POST格式编码到我的服务器: 我发送的请求(目前没有参数)如下 如何在请求中包含表单编码参数?
我试图使用以下客户端代码调用REST服务,目的是发送一些字符串消息详细信息以及附件文件: 我的目标服务器接受Base64编码的内容,这就是为什么额外的从文件传输到ByteArray的原因。 此外,我发现类com.sun.jersey.core.impl.provider.entity.FormProvider用于生产和消费“x-www-form-urlencoded”请求。 但我还是得出了以下结论