首页 > 解决方案 > 为什么 Spring UriComponentsBuilder 会抛出 java.lang.IllegalArgumentException?

问题描述

为了让我的 Java SpringBoot 应用程序与常规 REST 端点集成,我有这个方法来准备 URI

import org.springframework.web.util.UriComponentsBuilder;

    private URI prepareEndpointUrl(MyQuery q) {
    return UriComponentsBuilder.fromHttpUrl(apiConfiguration.getLeadTimesPreCalcRestEndpointUrl())
            .queryParam(PARAM1, q.getCountryFrom())
            .queryParam(PARAM2, q.getZipCodeFrom())
            .queryParam(PARAM3, q.getCountryTo())
            .queryParam(PARAM4, q.getZipCodeTo())
            .build().toUri();
}

URL 通过参数传递给 UriComponentsBuilder 作为第一个参数取决于我的应用程序正在运行的环境。

适用于所有较低的环境,但在 prod 中抛出 java.lang.IllegalArgumentException。

ERROR @ o.a.c.c.C.[.[.[.[dispatcherServlet] | Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: [ https://A_VALID_HOST/api/XX-YY.json] is not a valid HTTP URL] with root cause
java.lang.IllegalArgumentException: [ https://A_VALID_HOST/api/XX-YY.json] is not a valid HTTP URL

我用谷歌搜索,显然它可能与编码 url/参数有关,我没有这样做。显然这个环境有些不同,我不知道如何开始找到什么。

任何想法?

标签: javaspring

解决方案


正如上面斯蒂芬所标记的,问题是我的 URL 中的一个空格,在http之前。

显然,没有修剪;感谢大家。


推荐阅读