gpt4 book ai didi

spring - 在 Spring 中使用 RestTemplate。异常 - 没有足够的变量可扩展

转载 作者:IT老高 更新时间:2023-10-28 13:45:06 32 4
gpt4 key购买 nike

我正在尝试访问 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。任何帮助将不胜感激。

谢谢

最佳答案

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

{pageSize}

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

一种解决方案是制作一个包含值的 String 对象

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

并在您的 URL 中提供一个真实的 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 请求的正文中发送它。

关于spring - 在 Spring 中使用 RestTemplate。异常 - 没有足够的变量可扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21819210/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com