爬坑记(1):配置地址有空格,java.lang.IllegalArgumentException: Illegal character in path at index 52
程序员文章站
2024-02-14 17:06:22
...
起因
业务需要,发post请求到一个地址,地址配置到项目的config.xml
中,在开发环境中地址直接是这样的:
测试什么都没问题。一上线就抛出异常。
java.lang.IllegalArgumentException: Illegal character in path at index 52: http://localhost:8080/xxxx/xxx/xxx.do
at java.net.URI.create(URI.java:859)
at org.apache.http.client.methods.HttpPost.<init>(HttpPost.java:76)
at cn.hicard.nocard.util.HCHttp.doPost(HCHttp.java:594)
at cn.hicard.nocard.web.service.jzg.RedPackService.saveRedPackData(RedPackService.java:94)
at cn.hicard.nocard.web.service.jzg.RedPackService$$FastClassByCGLIB$$9febc6d8.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at com.jfinal.aop.Invocation.invoke(Invocation.java:80)
后来百度可得是因为前面地址有空格,或许在linux上地址都不允许有空格。
url = xx
把=
两笔的空格去掉后,还是提示这个错误,后来通过日志打印发现,后面也有个空格,把它删除就可以了。
预防方案
在获取配置文件时使用trim()
处理一下。
public class trim {
public static void main(String[] args) {
String url = " localhost:8080/xxx/xxx/xx.do ";
System.out.println("------" + url + "-----");
System.out.println("------" + url.trim() + "-----");
}
}
结果:
—— localhost:8080/xxx/xxx/xx.do —–
——localhost:8080/xxx/xxx/xx.do—–
结果空格去掉了。
后记:
前一天刚刚是这个空格浪费了2小时,今天又碰到了,原因是使用解密算法时解密出来有空格。特此铭记。以后碰到这些传入的参数都加trim()
判断一下。