spring Web 客户端 post Long 类型的表单数据

spring web client post form data of Long type

我需要通过表单数据post数据到休息api。 这些值是长值。我写了下面的代码,它给出了错误。

MultiValueMap<String, Object> formData = new LinkedMultiValueMap<>();
  formData.add("commentId", Long.valueOf(98578976));
  formData.add("reactionID", Long.valueOf(609878777));


         webClient
          .post()
          .uri(url)
          .contentType(MediaType.APPLICATION_FORM_URLENCODED)
          .header("authorization", accessToken)
          .syncBody(formData)
          .retrieve()
          .bodyToMono(SocialFeed.class)
          .block();

错误:java.lang.ClassCastException:class java.lang.Long 无法转换为 class java.lang.String(java.lang.Long 和 java.lang.String在加载程序 'bootstrap') 的模块 java.base 中。

通常它是 string, string 的例外多值映射。如何post其他类型的数据? 键是字符串,值是长?

对于 MultiValueMap.

,您需要将所有数据放入 String 格式
MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
formData.add("commentId", String.valueOf(98578976L));
formData.add("reactionID", String.valueOf(609878777L));

您使用的 webclient 可能无法将数据转换为 String 类型(我相信他在幕后所做的事情)。

对您有好处 - 您可以通过手动将数据转换为 String 来控制要发布的内容。所以你不必依赖内部 serializers/casts/etc.