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



我正在尝试在Spring Boot中使用WebClient进行neneneba API POST请求。但是我不能作为JSONObject发出请求并接收响应。通过RestTemplate我做到了,最近我开始学习WebClient。所以我被卡住了。

错误弹簧给出:错误:(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
}
]
}

感谢您的帮助!

问题很可能是您要求返回一个字符串,但将其分配给了一个JSONObject。这个异常看起来很奇怪,我预计你会遇到编译错误,但试试这个:

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

您需要将请求中的内容类型固定为MediaType.APPLICATION_JSON,以便它将您的对象作为json传递。

最新更新