【问题标题】:spring web client post form data of Long typeSpring Web客户端发布Long类型的表单数据
【发布时间】:2020-09-21 09:37:09
【问题描述】:

我需要通过表单数据将数据发布到 rest 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:类 java.lang.Long 无法转换为类 java.lang.String(java.lang.Long 和 java.lang.String 位于加载程序“bootstrap”的模块 java.base 中)。

通常它的字符串多值映射除外,字符串。如何发布其他类型的数据? key是String,value是long?

【问题讨论】:

    标签: java spring spring-boot rest webclient


    【解决方案1】:

    您需要将所有数据以 String 格式放入 MultiValueMap

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

    您使用的网络客户端在将数据转换为字符串类型时可能存在问题(我相信他在幕后所做的事情)。

    对您有什么好处 - 您可以通过手动将数据转换为 String 来控制要发布的内容。因此,您不必依赖内部序列化程序/强制转换/等。

    【讨论】:

      猜你喜欢
      • 2012-06-24
      • 2020-05-04
      • 1970-01-01
      • 1970-01-01
      • 2013-05-22
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多