前端调用短信批量发送接口返回报错信息
Illegal character in URL 第一时间去排查前端传递的参数,反复检查发现没有问题,经过后端源码才发现是下面这段代码出现问题 URLConnection conn = url.openConnection();conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.connect();BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()))
这里的URL 是通过拼接参数的方式GET请求到上游短信平台,喵了下参数列表500多个,感觉是不是超出了GET请求参数的最大范围? 但是后面后知后觉,没理由报了这个错误 [http-nio-0.0.0.0-9090-exec-8] 2021-09-28 16:19:44,275 - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exceptionjava.net.MalformedURLException: Illegal character in URLat sun.net.www.http.HttpClient.getURLFile(HttpClient.java:628)后面去百度寻觅了下同病相怜的小伙伴,发现有同病相怜 https://blog.csdn.net/f1204270443/article/details/60963684
断点调试,的确发现,某个手机号后面多了一个换行
真相只有一个,数据问题,而这种数据问题其实是很有安全隐患的,因为末尾的换行,如果一些工具不支持图形化显示,根本不知道,而且通过SQL 语句 等号查询,也是查询不出来的
|