【请求第三方 url 异常】Illegal character in scheme name at index x (已解决)
目录
- 一、写在前面
- 二、问题场景
- 三、场景重现
- 1.拼接字符串并请求高德url
- 2.控制台异常提示
- 3.手动访问对应 `URL` 结果
- 四、正确流程
- 1.报错分析
- 2.查并修改找异常
- 3.重新运行并请求
- 五、总结反思
- 六、写在后面
我希望你能明白什么是真正的勇敢,并不是把枪拿在手里就是勇敢。而是你明明知道会失败,还是会去做,不管发生什么事情,你都会坚持下去。你很少会赢,但总会有赢的时候。
—— 《杀死一只知更鸟》
一、写在前面
高德用户 key
已脱敏,有相关业务功能的朋友可以去高德控制台申请
二、问题场景
最近在做一个请求 url
拉取数据的请求的时候,出现 Illegal character in scheme name at index 0
异常,但是访问对应 url
正常,如下图:
三、场景重现
1.拼接字符串并请求高德url
原 URL
地址:
拼接核心代码:
import com.mashibing.internalcommon.constant.MapConfigConstant;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;import javax.annotation.Resource;@Service
public class MapDicDistrictClient {@Value("${map.key}")private String mapKey;@Resourceprivate RestTemplate restTemplate;public String dicDistrict(String keywords){// 拼接请求的 urlStringBuilder url = new StringBuilder();url.append(MapConfigConstant.DISTRICT_URL);url.append("?");url.append("keywords=").append(keywords);url.append("&");url.append("subdistrict=3");url.append("&");url.append("key=").append(mapKey);System.out.println(url);ResponseEntity<String> forEntity = restTemplate.getForEntity(url.toString(), String.class);return forEntity.getBody();}}
2.控制台异常提示
控制台出现出现 Illegal character in scheme name at index 0
异常。
3.手动访问对应 URL
结果
我第一反省是 URL
拼接有误,于是手动访问了 URL
。
但是 URL
访问正常。
四、正确流程
1.报错分析
于是我仔细看了一下控制台提示,他说我 索引 0 位置有非法字符 ,于是我继续向后看,发现了奇怪的 %20 ,在我的印象里, %20 应该是空格的 html
转义编码。所以我发现了是自己 URL
有误。
2.查并修改找异常
查找拼接字符串时,第一个字段为:MapConfigConstant.DISTRICT_URL
于是我去看了一下这个静态变量
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I4ye3HvS-1657246675116)(C:\Users\杨思远\AppData\Roaming\Typora\typora-user-images\image-20220708100243268.png)]
于是发现他真的有个空格,然后我就把空格删了。
3.重新运行并请求
请求成功,截图如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3sJOw8Qn-1657246675116)(C:\Users\杨思远\AppData\Roaming\Typora\typora-user-images\image-20220708100916902.png)]
五、总结反思
解决 BUG
后,我又重新试了很多次,每次复制 URL
都没有带空格,应该是第一次拼接时候,将连接写在了注释里,复制粘贴的时候不小心复制了一个空格。
总结:
- 复制粘贴时候要小心
- 有问题要仔细看控制台报错
六、写在后面
最近工作较忙,需求较多,虽然遇到了很多问题,但是没有时间沉底,就鸽了两周,等忙完这个项目,会逐一记录最近遇到的问题以及解决方案。
欢迎关注,实现期间会经常发一些工作中遇到的问题。
欢迎随时留言讨论,与君共勉,知无不答!
【请求第三方 url 异常】Illegal character in scheme name at index x (已解决)相关推荐
- 【Android】java.lang.IllegalArgumentException Illegal character in scheme 异常
在使用字符串拼接成url地址进行数据请求的时候,有时在数据请求的时候会出现 java.lang.IllegalArgumentException: Illegal character in schem ...
- flutter 报错java.net.URISyntaxException: Illegal character in opaque part at index 2
记录flutter报错如下错误以及解决办法 FAILURE: Build failed with an exception. * What went wrong: Execution failed f ...
- 【HIbernate异常】could not initialize proxy - no Session (已解决)
异常信息: org.hibernate.LazyInitializationException: could not initialize proxy - no Session 解决方法: 用 get ...
- (xxx.dll)处(位于xxx.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000003F 时发生访问冲突。已解决。
下面两个这种类型的报错都一样.(跟xxx.dll和xxx.exe都没关系) 0x794CECC1 (Qt5Cored.dll)处(位于 xxx.exe 中)引发的异常: 0xC0000005: 读取位 ...
- 3.40 OrCAD输出网表出现“Duplicate Pin Name”错误时应该怎么处理?OrCAD输出网表出现“Illegal character”错误时应该怎么处理?
笔者电子信息专业硕士毕业,获得过多次电子设计大赛.大学生智能车.数学建模国奖,现就职于南京某半导体芯片公司,从事硬件研发,电路设计研究.对于学电子的小伙伴,深知入门的不易,特开次博客交流分享经验,共同 ...
- Illegal character in query Url中含有{}
在抓取某网站信息的时候,url是这样的: http....{...}...,出现了大括号. 原样将url放在代码里,发送post请求的时候,发现请求不到数据.但把url放到浏览器里是ok的. 对相关的 ...
- http请求报错Illegal character in query at index 303的解决方法
http请求报错"Illegal character in query at index 303"的解决方法 执行jmeter的http请求时,请求失败,在Sampler resu ...
- java.net.URISyntaxException: Illegal character in query
java使用httpclient爬取一个网站的时候,请求:String url3="http://sh.58.com/ershoufang/33562546149042x.shtml?amp ...
- 十几款应用广泛的第三方URL解析库被曝8个漏洞
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 网络安全公司 Claroty 和 Synk 联合分析了16款不同的第三方 URL 解析库,结果发现八个不一致和混淆问题,可用于绕过验证并易受大量 ...
最新文章
- 和富友牵手与世界同步—高端体育时尚服装品牌的高标准伙伴
- Xilinx FPGA的配置
- 语义分割损失函数系列(2):IoU损失
- 【TensorFlow】:解决TensorFlow的ImportError: DLL load failed: 动态链接库(DLL)初始化例程失败...
- 【tensorflow】张量tensor--数据容器(把它想象成一个数字的水桶)
- 6月全球Web服务器市场份额:Apache升至64.33%
- python虚拟环境中安装diango_创建python虚拟环境,安装django,创建一个django项目,在项目中创建一个应用(ubuntu16.04)...
- java二进制命令_Java二进制指令代码解析
- 多程序集版本冲突问题
- 防刷新ajax视频教程,【赖国荣】Ajax基础与提升第7讲:ajax实现刷新内容实例讲解...
- Atitit.设计模式-----触发器模式 trigger 详解
- Java静态代理和动态代理(代理模式)详解
- 赛马问题--最全面的解析
- 华为防火墙忘记密码,使用console口更改密码
- 西门子scl语言和c语言,在西门子PLC中使用SCL语言编程的技巧
- 只能上QQ,不能打开网页的解决办法
- MySQL篇之授权用户可以远程访问数据库
- Android 9 系统修改内设WLAN热点名称
- 斯坦福发布3D街景数据集:8个3D城市模型+2500万图像+1.18亿图像配对
- umi build打包之后部署报错
热门文章
- 戴尔15pr-2648b true color下载方法
- 11对战平台修改服务器,11对战平台新手使用指南
- python 通达信自动下载收盘和财务数据
- 天津杨柳青十八天“传销”经历
- 股票波段+趋势+主力动向 三合一指标公式(无未来函数)
- 赖信仁-EA和UML团队开发技巧-UMLChina讲座-音频和幻灯
- 利用JavaScript分别实现倒计时、跑马灯和打字机效果
- Java 基础学习-Java语言概述
- [RCTF2019]printer详解(python脚本、USB协议精解、TSLP2文档阅读)
- FPGA知识积累【3】