/**
* 模拟服务端
* @param token
* @param bodyMap
* @return
*/public Mono<JSONArray> doPostAndSaveList(String token, Map<String, Object> bodyMap) {
log.info("进入doPost方法");
Disposable subscribe = WebClient.create(baseUrl)
.post()
.uri(uriBuilder -> uriBuilder.path(uri)
.queryParam("access_token", token)
.build())
.bodyValue(bodyMap)
.retrieve()
.bodyToMono(JSONObject.class).subscribeOn(Schedulers.elastic())
.flatMap(
jsonObject -> {
//处理结果
String groupsStr = jsonObject.getString("group_chat_list");
log.info("groupsStr:{}", groupsStr);
List<GroupListResponse> groupListResponses = null;
JSONArray jsonObjectJSONArray = jsonObject.getJSONArray("group_chat_list");
if (jsonObjectJSONArray != null) {
for (int i = 0; i < jsonObjectJSONArray.size(); i++) {
System.out.println(jsonObjectJSONArray.getJSONObject(i));
}
return Mono.just(jsonObjectJSONArray);
} else {
return Mono.empty();
}
}).subscribe();
return null;
}
如代码,我这里设定了返回null,但是其实是想返回请求回来的flatMap中的jsonArray.
虽然不subscribe可以将返回值Disposable改为Mono<JSONArray>,但是不进行subscribe是无法获取数据的.
这个数据作为另一个方法来进行业务逻辑处理使用~
有什么办法呢?
String groupsStr
这个声明到log.info("进入doPost方法"); 下面
再return groupsStr;
试过了 要设置不同的赋值方法,而且获取不到.
@君君的BigHeadDaddy:
直接返回所有:例子:
public Mono<String> getJokeAsync(String first, String last) { return client.get() .uri(uriBuilder -> uriBuilder.path("/jokes/random") .queryParam("limitTo", "[nerdy]") .queryParam("firstName", first) .queryParam("lastName", last) .build()) .accept(MediaType.APPLICATION_JSON) .retrieve() .bodyToMono(JokeResponse.class) .map(jokeResponse -> jokeResponse.getValue().getJoke()); }
@君君的BigHeadDaddy: https://lankydan.dev/2018/03/15/doing-stuff-with-spring-webflux/
@悟行: 真不错,帮助很大 分全给你了
@悟行: 我这边还想问下其它问题,,,