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

在Spring中使用RestTemplate。异常-没有足够的变量可用于展开 报错 拼音 双语对照

徐鸿达
2023-03-14
问题内容

我正在尝试访问API的内容,我需要使用RestTemplate发送URL。

String url1 = "http://api.example.com/Search?key=52ddafbe3ee659bad97fcce7c53592916a6bfd73&term=&limit=100&sort={\"price\":\"desc\"}";

OutputPage page = restTemplate.getForObject(url1, OutputPage .class);

但是,我收到以下错误。

Exception in thread "main" java.lang.IllegalArgumentException: Not enough variable values available to expand '"price"'
at org.springframework.web.util.UriComponents$VarArgsTemplateVariables.getValue(UriComponents.java:284)
at org.springframework.web.util.UriComponents.expandUriComponent(UriComponents.java:220)
at org.springframework.web.util.HierarchicalUriComponents.expandInternal(HierarchicalUriComponents.java:317)
at org.springframework.web.util.HierarchicalUriComponents.expandInternal(HierarchicalUriComponents.java:46)
at org.springframework.web.util.UriComponents.expand(UriComponents.java:162)
at org.springframework.web.util.UriTemplate.expand(UriTemplate.java:119)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:501)
at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:239)
at hello.Application.main(Application.java:26)

如果我删除排序条件,则它工作正常。我需要使用排序条件来解析JSON。任何帮助都感激不尽。

谢谢


问题答案:

根本原因是将给定URL中的RestTemplate花括号{...}视为URI变量的占位符,并尝试根据其名称替换它们。例如

{pageSize}

会尝试获取名为的URI变量pageSize。这些URI变量是通过其他一些重载getForObject方法指定的。你没有提供任何内容,但你的URL需要一个,因此该方法将引发异常。

一种解决方案是使String包含该值的对象

String sort = "{\"price\":\"desc\"}";

并在你的网址中提供真实的URI变量

String url1 = "http://api.example.com/Search?key=52ddafbe3ee659bad97fcce7c53592916a6bfd73&term=&limit=100&sort={sort}";

你会打电话给你getForObject(),像这样

OutputPage page = restTemplate.getForObject(url1, OutputPage.class, sort);

我强烈建议你不要在GET请求的请求参数中发送任何JSON,而应在POST请求的正文中发送。



 类似资料:
  • 问题内容: 我正在尝试使用RestTemplate这样执行URL- 但是每次我遇到这样的错误- 我在做什么错以及如何解决? 更新:- 我也尝试过使用该网址,但它对我没有用。我刚刚更换用 更新2 这是代码- 错误是- 问题答案: 似乎没有办法忽略它。而是根据您的值生成一个(不使用double )。 并使用需要使用的重载方法。

  • 问题内容: 我有如下的Web.xml: [编辑] 添加spring security后,我得到了错误! 然后我加了 那么似乎工作正常,但是然后1)问题是bean被创建了两次! 如果我只删除它: 但离开该 Web应用程序则根本无法运行 [额外] 完整的Web.xml如下: 这是我的mvc-dispatcher-servlet.xml 问题答案: 在Servlet容器生命周期内,容器首先初始化,然后初

  • 我对Scala和Spark RDD编程相当陌生。我使用的数据集是一个CSV文件,其中包含电影列表(每部电影一行)及其关联的用户评分(以逗号分隔的评分列表)。CSV中的每一列都代表一个不同的用户,以及他/她对电影的评价。因此,用户1对每部电影的评分在左侧第二列中表示: 示例输入: 蜘蛛侠,1,2,3,3 睡眠博士,4,4,,1 我得到以下错误: 当我执行下面的几行时。对于下面的程序,第二行代码拆分由

  • 那么,为什么它要尝试将响应解析为JSON呢?我该如何解决呢? 谢谢!!

  • 我有一个使用Jersey 2.x的简单REST API项目。我尝试使用GoogleGuice注入我的依赖项,但似乎不起作用。我得到这个错误: 组织.glassfish.hk2.api.不满意的依赖性例外:在系统导入过程中没有可用于注入的对象(必填类型=帐户服务,父=帐户资源,限定符={},位置=0,可选=假,自=假,非限定=空,1658198405) 我有这个简单的资源类 我想将此服务注入我的资源

  • 问题内容: 乔什·布洛赫(Josh Bloch)提到在双重检查惯用语中使用局部变量来提高性能(EJ,第二版,第284页),并说示例代码在其机器上的运行速度比不具有局部变量的机器快25%。所以问题是,为什么速度更快?对于局部变量版本,它将访问实例变量3次,在正常情况下,它将访问实例变量4次。这是“ 25%”增长背后的原因还是其他原因? 编辑:3或4倍访问仅在实例首次创建时。此后,它是1或2次。 ED