当前位置: 首页 > article >正文

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);

        重新测试可通过,


http://www.kler.cn/a/507530.html

相关文章:

  • 【Elasticsearch】全文搜索与相关性排序
  • 【PHP】双方接口通信校验服务
  • 【网络 MAC 学习专栏 -- 如何理解 PHY 的 Link Up】
  • 基于springboot的自习室预订系统
  • 低代码独特架构带来的编译难点及多线程解决方案
  • Android15源码编译问题处理
  • Springboot项目Jackson支持多种接收多种时间格式
  • C语言:-三子棋游戏代码:分支-循环-数组-函数集合
  • 如何利用CodeMeter保护您的物联网设备
  • XXL-JOB 加入 GitCode:推动分布式任务调度进阶发展
  • 【CLIP-LIT】Iterative Prompt Learning for Unsupervised Backlit Image Enhancement
  • 今日总结 2025-01-17
  • 【HBuilderX 中 Git 的使用】
  • C++通透讲解设计模式:依赖倒转(1)
  • 【MySQL】:事务
  • 什么是 OpenSSL?OpenSSL 如何工作?
  • hive连接mysql报错:Unknown version specified for initialization: 3.1.0
  • OpenCV入门学习
  • 讲一下ZooKeeper的持久化机制?
  • 【Linux】进程结束和进程等待
  • 银行卡 卡号展示隐藏****
  • 【大语言模型】ACL2024论文-38 从信息瓶颈视角有效过滤检索增强生成中的噪声
  • C# OpenCV机器视觉:极大值抑制
  • 销售团队如何选择销售业绩统计表模板?
  • PouchDB + Dexie.js:构建高效的离线优先同步方案
  • 《探索烟雾目标检测开源项目:技术与应用的深度剖析》