当前位置: 首页 > 面试题库 >

IllegalArgumentException:RestTemplate是否没有足够的变量值?

郭凡
2023-03-14
问题内容

我正在尝试使用RestTemplate这样执行URL-

public static void main(String[] args) throws UnsupportedEncodingException {
    RestTemplate restTemplate = new RestTemplate();
    String url = "http://ptr.vip.host.com/pss/repositories/pssdb/branches/main/query/Service[@alias="
                        + "hello"
                        + "].serviceInstances.runsOn{@resourceId}?allowScan=true&limit=10000&skip=0";
    try {
        String response = restTemplate.getForObject(url, String.class);
        System.out.println(response);
    } catch (RestClientException ex) {
        ex.printStackTrace();
    }
}

但是每次我遇到这样的错误-

Exception in thread "main" java.lang.IllegalArgumentException: Not enough variable values available to expand '@resourceId'
    at org.springframework.web.util.UriComponents$VarArgsTemplateVariables.getValue(UriComponents.java:272)

我在做什么错以及如何解决?

更新:-

我也尝试过使用该网址,但它对我没有用。我刚刚更换{@resourceId}{{@resourceId}}

String url = "http://ptr.vip.host.com/pss/repositories/pssdb/branches/main/query/Service[@alias="
                        + "hello"
                        + "].serviceInstances.runsOn{{@resourceId}}?allowScan=true&limit=10000&skip=0";

更新2

这是代码-

try {

    UriComponentsBuilder builder = UriComponentsBuilder
            .fromPath("http://ptr.vip.str.host.com/pss/repositories/pssdb/branches/main/query/Service[@alias="
                    + "hello"
                    + "].serviceInstances.runsOn{@resourceId}?allowScan=true&limit=10000&skip=0");
    UriComponents uriComponents = builder.build();
    URI uri = uriComponents.toUri();

    String response = restTemplate.getForObject(uri, String.class);
    System.out.println(response);

} catch (RestClientException ex) {
    ex.printStackTrace();
}

错误是-

Exception in thread "main" java.lang.IllegalArgumentException: URI is not absolute
    at java.net.URI.toURL(URI.java:1095)
    at org.springframework.http.client.SimpleClientHttpRequestFactory.createRequest(SimpleClientHttpRequestFactory.java:109)
    at org.springframework.http.client.support.HttpAccessor.createRequest(HttpAccessor.java:76)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:479)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:460)
    at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:228)

问题答案:

似乎没有RestTemplate办法忽略它{...}。而是URI根据您的String值生成一个(不使用double {})。

String url = "http://ptr.vip.host.com/pss/repositories/pssdb/branches/main/query/Service[@alias="
            + "hello"
            + "].serviceInstances.runsOn{@resourceId}?allowScan=true&limit=10000&skip=0";
UriComponentsBuilder builder = UriComponentsBuilder.fromPath(url);
UriComponents uriComponents = builder.build();
URI uri = uriComponents.toUri();

并使用getForObject需要使用的重载方法URI



 类似资料:
  • 问题内容: 根据标题,您是否找到了足以满足您需求的默认Java日志记录框架? 您是否使用替代日志记录服务,例如log4j或其他服务?如果是这样,为什么?我想听听您对有关不同类型项目中的日志记录要求的任何建议,以及在实际需要和/或有用时集成框架的建议。 问题答案: 使用第三方库记录依赖项 在大多数情况下,Java JDK日志记录本身并不足够。但是,如果您有一个使用多个开源第三方库的大型项目,您将很快

  • 我正在建立一个有用户的网站,和大多数包含一些用户类型系统的网站一样,他们用他们的电子邮件和密码登录。我使用PHP为我的网站的后端部分。 在阅读了互联网上的一些文章和帖子后,我了解了PHP函数password_hash()和password_verify(),并想知道像这样的示例过程是否足够安全? 注册用户,password_hash他们的密码,并将散列存储在数据库中。 登录时,使用password

  • 我目前正在尝试创建带有python文件和大量额外软件包的docker映像。txt。 当我运行命令“sudo docker build-t XXX”时软件包被一个接一个地下载和安装,直到我收到一个错误:“由于环境错误,无法安装软件包:[Errno 28]设备上没有剩余空间” 我已经做了“sudo docker system prune”的原子选项,所有过去的docker镜像都被删除了。 此外,“su

  • 问题内容: 目前,我正在使用带有LinearLayout Manager的RecyclerView和作为HeaderView的EditText来过滤列表的内容。 如果RecyclerView的内容小于RecyclerView本身,我想隐藏EditText。 如果其内容可以滚动,是否可以“询问” Recyclerview或LayoutManager? 谢谢你们。 问题答案: 当最后位置的项目完全可见

  • 问题内容: 我正在从一个网站上学习文件管理,我尝试执行某个脚本,但对我来说效果不佳。 它一直在以下行返回此错误: ValueError:没有足够的值可解包(预期至少为2,得到0) 我正在尝试按字母顺序排列并按腌制方式转储城市及其时区的列表,该文本文件具有以下几行: 这是代码: 问题答案: 您需要一个if条件,该条件允许您跳过空白行。就像是:

  • 晚上好我正在使用Webview在Android上制作跟踪应用程序。我遇到了问题,因为该系统在该位置附近运行良好。我试过Grishma Ukani先生的一些方法(非常感谢)。 一切顺利,没有错误。但仍然无法获得设备位置/权限,然后这些信息就会出现在android studio上 E/cr_LocationProvider:从系统注册位置更新时捕获安全异常应用程序没有足够的地理定位权限E/cr_Loc