目录

  • 一、写在前面
  • 二、问题场景
  • 三、场景重现
    • 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 都没有带空格,应该是第一次拼接时候,将连接写在了注释里,复制粘贴的时候不小心复制了一个空格。

总结:

  1. 复制粘贴时候要小心
  2. 有问题要仔细看控制台报错

六、写在后面

最近工作较忙,需求较多,虽然遇到了很多问题,但是没有时间沉底,就鸽了两周,等忙完这个项目,会逐一记录最近遇到的问题以及解决方案。

欢迎关注,实现期间会经常发一些工作中遇到的问题。

欢迎随时留言讨论,与君共勉,知无不答!

【请求第三方 url 异常】Illegal character in scheme name at index x (已解决)相关推荐

  1. 【Android】java.lang.IllegalArgumentException Illegal character in scheme 异常

    在使用字符串拼接成url地址进行数据请求的时候,有时在数据请求的时候会出现 java.lang.IllegalArgumentException: Illegal character in schem ...

  2. 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 ...

  3. 【HIbernate异常】could not initialize proxy - no Session (已解决)

    异常信息: org.hibernate.LazyInitializationException: could not initialize proxy - no Session 解决方法: 用 get ...

  4. (xxx.dll)处(位于xxx.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000003F 时发生访问冲突。已解决。

    下面两个这种类型的报错都一样.(跟xxx.dll和xxx.exe都没关系) 0x794CECC1 (Qt5Cored.dll)处(位于 xxx.exe 中)引发的异常: 0xC0000005: 读取位 ...

  5. 3.40 OrCAD输出网表出现“Duplicate Pin Name”错误时应该怎么处理?OrCAD输出网表出现“Illegal character”错误时应该怎么处理?

    笔者电子信息专业硕士毕业,获得过多次电子设计大赛.大学生智能车.数学建模国奖,现就职于南京某半导体芯片公司,从事硬件研发,电路设计研究.对于学电子的小伙伴,深知入门的不易,特开次博客交流分享经验,共同 ...

  6. Illegal character in query Url中含有{}

    在抓取某网站信息的时候,url是这样的: http....{...}...,出现了大括号. 原样将url放在代码里,发送post请求的时候,发现请求不到数据.但把url放到浏览器里是ok的. 对相关的 ...

  7. http请求报错Illegal character in query at index 303的解决方法

    http请求报错"Illegal character in query at index 303"的解决方法 执行jmeter的http请求时,请求失败,在Sampler resu ...

  8. java.net.URISyntaxException: Illegal character in query

    java使用httpclient爬取一个网站的时候,请求:String url3="http://sh.58.com/ershoufang/33562546149042x.shtml?amp ...

  9. 十几款应用广泛的第三方URL解析库被曝8个漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 网络安全公司 Claroty 和 Synk 联合分析了16款不同的第三方 URL 解析库,结果发现八个不一致和混淆问题,可用于绕过验证并易受大量 ...

最新文章

  1. 和富友牵手与世界同步—高端体育时尚服装品牌的高标准伙伴
  2. Xilinx FPGA的配置
  3. 语义分割损失函数系列(2):IoU损失
  4. 【TensorFlow】:解决TensorFlow的ImportError: DLL load failed: 动态链接库(DLL)初始化例程失败...
  5. 【tensorflow】张量tensor--数据容器(把它想象成一个数字的水桶)
  6. 6月全球Web服务器市场份额:Apache升至64.33%
  7. python虚拟环境中安装diango_创建python虚拟环境,安装django,创建一个django项目,在项目中创建一个应用(ubuntu16.04)...
  8. java二进制命令_Java二进制指令代码解析
  9. 多程序集版本冲突问题
  10. 防刷新ajax视频教程,【赖国荣】Ajax基础与提升第7讲:ajax实现刷新内容实例讲解...
  11. Atitit.设计模式-----触发器模式 trigger  详解
  12. Java静态代理和动态代理(代理模式)详解
  13. 赛马问题--最全面的解析
  14. 华为防火墙忘记密码,使用console口更改密码
  15. 西门子scl语言和c语言,在西门子PLC中使用SCL语言编程的技巧
  16. 只能上QQ,不能打开网页的解决办法
  17. MySQL篇之授权用户可以远程访问数据库
  18. Android 9 系统修改内设WLAN热点名称
  19. 斯坦福发布3D街景数据集:8个3D城市模型+2500万图像+1.18亿图像配对
  20. umi build打包之后部署报错

热门文章

  1. 戴尔15pr-2648b true color下载方法
  2. 11对战平台修改服务器,11对战平台新手使用指南
  3. python 通达信自动下载收盘和财务数据
  4. 天津杨柳青十八天“传销”经历
  5. 股票波段+趋势+主力动向 三合一指标公式(无未来函数)
  6. 赖信仁-EA和UML团队开发技巧-UMLChina讲座-音频和幻灯
  7. 利用JavaScript分别实现倒计时、跑马灯和打字机效果
  8. Java 基础学习-Java语言概述
  9. [RCTF2019]printer详解(python脚本、USB协议精解、TSLP2文档阅读)
  10. FPGA知识积累【3】