欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > SpringBoot:RestTemplate与IllegalArgumentException

SpringBoot:RestTemplate与IllegalArgumentException

2025/2/26 4:32:54 来源:https://blog.csdn.net/weixin_43524214/article/details/145195146  浏览:    关键词:SpringBoot:RestTemplate与IllegalArgumentException

问题描述

        在SpringBoot应用中,有时会遇到使用RestTemplate调用第三方服务的场景。例如:在进行地名数据采集时,为了拿到地名对应的经纬度位置,通常会有地理编码的步骤,此时就可能涉及到调用第三方接口服务实现此需求。

        以调用天地图提供的地理编码服务接口为例,请求地址为:

 http://api.tianditu.gov.cn/geocoder?ds={"keyWord":"北京市延庆区延庆镇莲花池村前街50夕阳红养老院"}&tk=您的密钥

        但是,如果采用直接拼接字符串的方式,就会遇到RestTemplate抛出的异常信息:IllegalArgumentException: Not enough variables available to expand。 

解决方案

        根据经验,应始终使用 POST 请求来发送 JSON 数据。

        虽然不推荐使用 GET,但一个可行的解决方案是定义一个包含 ds的 String 对象,并在 URL 中提供一个真正的 URI 变量。示例代码如下,

//构造请求地址
String ds = "{\"keyWord\":\"" + keyword + "\"}";
String url = String.format("%s?tk=%s&ds={ds}", geocoderUrl, key);
//发送请求
String result = restTemplate.getForObject(url, String.class, ds);
System.out.println(result);

        重新测试可通过,

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词