java webClient抛出未知主机异常

7gyucuyw  于 2023-02-28  发布在  Java
关注(0)|答案(1)|浏览(297)

我有下面的函数,我用webClient调用了一个API,该API有两个参数
此函数工作良好

public Mono<PersonContent> searchPerson(KRequest keyword, int page, int size) {
    return webClient.post().uri(spiProperties.getUrl().getK().getUrlPersons() + "search?page=" + page + "&size=" + size)
            .bodyValue(keyword)
            .retrieve()
            .bodyToMono(PersonContent.class);
}

当我使用queryParams设置如下参数时,我遇到了一个异常
java.net.UnknownHostException: Unknown host (https:)

public Mono<PersonContent> searchPerson(KRequest keyword, int page, int size) {
    final MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<>();
    queryParams.add("page", String.valueOf(page));
    queryParams.add("size", String.valueOf(size));

    return webClient.post().uri(
                    uriBuilder -> uriBuilder
                            .path(spiProperties.getUrl().getK().getUrlPersons() + "search")
                            .queryParams(queryParams)
                            .build())
            .bodyValue(keyword)
            .retrieve()
            .bodyToMono(PersonContent.class);
}
ki1q1bka

ki1q1bka1#

错误消息指示正在构造的URI包含无效主机。
使用UriComponentsBuilder构造URI

URI uri = UriComponentsBuilder
        .fromUriString(spiProperties.getUrl().getK().getUrlPersons())
        .path("search")
        .queryParams(queryParams)
        .build()
        .toUri();

    return webClient.post().uri(uri)
            .bodyValue(keyword)
            .retrieve()
            .bodyToMono(PersonContent.class);

相关问题