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

Spring Boot中WebClient中的POST请求并作为JSONObject接收响应

闾丘晨
2023-03-14

我正在尝试在Spring Boot中使用WebClient制作API POST Request。但是我无法以JSONObject的形式发出请求并接收响应。使用RestTemboard我做到了,最近我开始学习WebClient。所以我被卡住了。

错误Spring给出:错误:(48,28)java:不兼容的类型:不存在类型变量T的实例,因此reactor.core.publisher.Mono符合org.json.simple.JSONObject

以下是我的源代码:

Controller.java

        JSONObject jsonObject = new JSONObject();
        Turnover turnover = new Turnover();

               JSONObject resp = webClientBuilder.build()
                .post()
                .uri("http://180.12.10.10:8080/turnover/")
                .contentType(MediaType.APPLICATION_FORM_URLENCODED)
                .accept(MediaType.APPLICATION_JSON )
                .body(Mono.just(turnover),Turnover.class)
                .retrieve()
                .bodyToMono(JSONObject.class);

人事变更率Java语言


@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor

public class Turnover {

    private String start_date;
    private String end_date;
    private String account;

    public Turnover(){
        setStart_date("01.01.2020");
        setEnd_date("01.06.2020");
        setAccount("20296");
    }
}

我要发送的Json

{
  "start_date":"01.01.2020",
  "end_date":"01.06.2020",
  "account":"20296"
}

响应API返回:

{
    "status": 1,
    "message": "success",
    "data": [
        {
            "CODE_ACCOUNT": "20296",
            "CREDIT": 60610187386.86,
            "DEBIT": 60778253872.1
        }
    ]
}

感谢任何帮助!

共有1个答案

柴丰
2023-03-14

最可能的问题是,您要求返回一个字符串,但将其分配给JSONObject。这个异常看起来很奇怪,我预计您所拥有的可能会出现编译错误,但请尝试以下操作:

  .bodyToMono(JSONObject.class)
  .block();

您需要将请求的内容类型固定为MediaType。APPLICATION\u JSON,以便它以JSON的形式传递对象。

 类似资料:
  • 我正在用spring WebClient对API进行并行rest调用。响应如下所示 POJOS: 获取产品 这也是有效的,但是有没有一种方法可以直接返回,或者返回更好? (下一步是将产品保存在数据库中)

  • 我试图使用新的SpringBoot2 Reactive WebClient类(它没有批处理endpoint)对同一个rest服务进行并行(批处理)调用。例如,我需要100个“comment”对象(ids为1...100),我正在执行以下并行调用: 我是Spring WebFlux的新手,我不确定这是否是用WebClient进行并行调用的正确方法 > 有没有更好(更合适)的方法来做这件事(即做一个单

  • 问题内容: 因此,我正在一个需要调用服务器并返回zip文件的网站上工作,问题是我不确定自己是否做对了所有事情。该代码看起来像这样: 如您所见,我需要使用响应中的字节数组来填充文件,我该怎么做? 问题答案: 一种利用的方法; 检查element是否具有属性,如果为true,则将property 设置为; 否则,使用带参数的响应 使用jQuery版本叉的 只需下载就可以了 您可以使用元素,属性 或者使

  • 问题内容: 如何从CherryPy中的POST请求接收JSON? 我去过此页面,尽管它在解释API,其参数及其作用方面做得很好。我似乎无法弄清楚如何使用它们将传入的JSON解析为一个对象。 这是我到目前为止的内容: 而且,这是我的jquery调用以发布帖子 问题答案: 工作示例: 链接到的文档介绍了3.2版中的几个CherryPy工具。该工具基本上可以更严格地完成上述操作,并使用3.2中的新主体处

  • 这是我第一次尝试进行基本身份验证,但似乎没有任何效果。Axios post未发送数据/控制器未返回响应。我找不到我到底哪里出错了,但我想知道我的http post请求的主体是否必须与requestbody匹配,或者我需要做什么更改才能让UserRepository将表单dat保存在数据库中? }

  • 我试图使用RESTTEMPLATE触发restApi.request接受json(我已经为它创建了一个自定义对象)并以“/”mediatype的形式发送响应。 预期请求: Edit2:我尝试添加messageConverter,如下所示: 但它仍然给出了同样的错误。我想知道我是否需要编写自定义消息转换器?有人能帮我明白我是否走在正确的道路上吗?