首页 新闻 会员 周边

Spring5 WebFlux问题.

0
悬赏园豆:30 [已解决问题] 解决于 2020-10-14 09:38
/**
 * 模拟服务端
 * @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是无法获取数据的.
这个数据作为另一个方法来进行业务逻辑处理使用~
有什么办法呢?

ukyo--BlackJesus的主页 ukyo--BlackJesus | 初学一级 | 园豆:139
提问于:2020-10-11 10:21
< >
分享
最佳答案
0

String groupsStr
这个声明到log.info("进入doPost方法"); 下面

再return groupsStr;

收获园豆:30
悟行 | 专家六级 |园豆:12559 | 2020-10-13 08:41

试过了 要设置不同的赋值方法,而且获取不到.

ukyo--BlackJesus | 园豆:139 (初学一级) | 2020-10-13 12:06

@君君的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());
}

 

 

悟行 | 园豆:12559 (专家六级) | 2020-10-14 08:39
悟行 | 园豆:12559 (专家六级) | 2020-10-14 08:41

@悟行: 真不错,帮助很大 分全给你了

ukyo--BlackJesus | 园豆:139 (初学一级) | 2020-10-14 09:37

@悟行: 我这边还想问下其它问题,,,

ukyo--BlackJesus | 园豆:139 (初学一级) | 2020-10-15 10:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册