当前位置: 首页 > 知识库问答 >
问题:

Spring WebClient将动态请求体作为JSON传递

殳俊
2023-03-14

我想在通过WebClient进行API调用时传递通用请求主体。我在数据库中有动态键值对,比如(key1-value1、key2-value2、key3-value3)。此键值可能会增加或减少。

有没有办法用JSON请求体调用带有动态数据的API?

webClient.post().uri(uri).header(CONTENT_TYPE, APPLICATION_JSON)
            .body({DYANAMIC JSON}).retrieve().onStatus(HttpStatus::isError, clientResponse -> {
                return Mono.error(new Exception("error"));
            }).bodyToMono(String.class);

非常感谢。

共有2个答案

容宏逸
2023-03-14

你可以把身体作为地图传递,在身体里你可以把它映射到任何一个地图。类或对象类。根据您的需求,您也可以传递JsonObject。

Map<String, String> r = new HashMap<>();
    webClient.post().uri(uri).header(CONTENT_TYPE, APPLICATION_JSON)
                    .body(Mono.just(r), Map.class).retrieve().onStatus(HttpStatus::isError, clientResponse -> {
                        return Mono.error(new Exception("error"));
                    }).bodyToMono(String.class);
焦阎宝
2023-03-14

如果已经有完整的请求正文,可以使用快捷方式bodyValue

Object requestBody = ...;
webClient.post()
    .uri(uri)
    .contentType(MediaType.APPLICATION_JSON)
    .bodyValue(requestBody)
    .retrieve()
    .onStatus(HttpStatus::isError, clientResponse -> {
        return Mono.error(new Exception("error"));
    })
    .bodyToMono(String.class);

此处的文档中描述了插入请求正文:https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html#webflux-客户团体

注意:您也可以使用快捷方式contentType(MediaType.APPLICATION_JSON)代替标头("Content-Type", MediaType.APPLICATION_JSON)

 类似资料:
  • 问题内容: 我正在尝试使用 nodejs 和 请求 [2] 向google QPX Express API [1]发出HTTP POST请求。 我的代码如下: 我想做的是使用multipart参数[3]传递JSON。但是我没有正确的JSON响应,而是收到一个错误(未定义400)。 当我使用CURL使用相同的JSON和API密钥发出请求时,它工作正常。因此,我的API密钥或JSON没错。 我的代码有

  • 我需要将一个json字符串作为值传递给POST请求正文的一个参数。我的请求正文如下所示: 对于参数3,我需要以json格式传递一个字符串值。json文件位于我的本地系统中,是一个巨大的文件,所以如果我可以将其作为jmeter变量传递,这是有意义的。我尝试了以下方法: 添加JSR223预处理器后,代码如下: 但我得到以下错误: 有人能帮我解决这个问题吗?

  • 问题内容: 我有一个非常长的数组和字符串,我想通过Alamofire发送,尽管我不知道如何将原始JSON作为参数发送。JSON看起来有点像 除了让它表现得像Swift数组然后进行序列化外,还有什么方法可以将这个JSON作为Alamofire中的参数传递? 谢谢! 编辑: 我能够在文本编辑器中发挥一些魔力来获取以Swift数组样式设置的参数(如所示),因此根据Eric的建议,将和制作成Diction

  • 我试图使用csv文件中的数据构建随机json请求。我已经定义了我的目标。场景功能如下 但是当我将日志级别设置为跟踪时,我看到所有请求都具有相同的值。我错过了什么吗?

  • 问题内容: 我正在使用API​​,并尝试在C#中执行JSON PUT请求。这是我正在使用的代码: 问题是我不知道如何将数据传递给API。因此,就像在JavaScript中一样,我将执行以下操作来传递数据: 我将如何在C#中执行相同的操作?谢谢! 问题答案: 绝对应该是: 除此之外,您的当前代码没有任何问题。 至于JSON生成部分,您可以使用JSON序列化器: 在此示例中,我显然使用了一个匿名对象,