POST 在 WebClient 中请求 Spring 以 JSONObject 形式启动并接收响应
POST Request in WebClient in Spring Boot and Receive responce as JSONObject
我正在尝试在 Spring 引导中使用 WebClient API POST 请求 .但我无法发出请求并接收响应 JSONObject。有了RestTemplate我就搞定了,最近开始学习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);
Turnover.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"
}
回复APIReturns:
{
"status": 1,
"message": "success",
"data": [
{
"CODE_ACCOUNT": "20296",
"CREDIT": 60610187386.86,
"DEBIT": 60778253872.1
}
]
}
感谢任何帮助!
问题很可能是您要求返回一个字符串,但将其分配给 JSONObject。这个异常看起来很奇怪,我预计你所拥有的会出现编译错误,但试试这个:
.bodyToMono(JSONObject.class)
.block();
并且您需要将请求的内容类型固定为 MediaType.APPLICATION_JSON
,以便它将您的对象作为 json.
传递
我正在尝试在 Spring 引导中使用 WebClient API POST 请求 .但我无法发出请求并接收响应 JSONObject。有了RestTemplate我就搞定了,最近开始学习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);
Turnover.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"
}
回复APIReturns:
{
"status": 1,
"message": "success",
"data": [
{
"CODE_ACCOUNT": "20296",
"CREDIT": 60610187386.86,
"DEBIT": 60778253872.1
}
]
}
感谢任何帮助!
问题很可能是您要求返回一个字符串,但将其分配给 JSONObject。这个异常看起来很奇怪,我预计你所拥有的会出现编译错误,但试试这个:
.bodyToMono(JSONObject.class)
.block();
并且您需要将请求的内容类型固定为 MediaType.APPLICATION_JSON
,以便它将您的对象作为 json.