JAVA后端,拼接URL访问,特殊字符异常处理
来源:互联网 发布:数据安全工程师 编辑:程序博客网 时间:2024/06/16 19:59
JAVA后端,拼接URL访问,特殊字符异常处理
一般来说,前端传入keyword之前都需要进行urlencode处理,详情见链接为什么要用 urlencode()。拿到参数(比如keyword)之后我们可能会需要利用此去拼接其他url,常见的报错有:
1、异常:java.lang.IllegalArgumentException: Illegal group reference
serviceUrl=geturl().replaceall("<keyword>",normalize(keyword));
keyword替换,遇到
关于得到地址中的数据,使用JDK中的urlConnection,详见urlConnection介绍。
URL url = new URL("http://www.baidu.com"); URI uri = new URI(url.getProtocol(), null, url.getHost(), url.getPort(), url.getPath(), url.getQuery(),null);String url=uri.toASCIIString();URL url = URLConnection rulConnection = url.openConnection();// 此处的urlConnection对象实际上是根据URL的 ,忽略该类的Host,user-agent等参数设置in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;while ((line = in.readLine()) != null) { resultBuffer.append(line);}//这样就可以得到内容了
解决办法之一就是把replaceall改成replace函数。现在说的另外两个坑是”#”和”&”字符。
2、#。URL中的#号表示链接结束,URL中#后面的字符都被认为位置标识符,用来作为识别标记或其他用途,也就是说#后面的的所有字符都不会被传入,这样可能后面的一些参数并没有传入进来,异常类型比较多。
问题的原因是因为前端传入参数时候会urlencode,而且我们用的URI函数有编码的功能,但是URI并不会编码#、@、&(肯定不可以,不然参数没办法区分了)和、$、*等,可以解析^为%5E,%为%25。以上字符urlencode都可以解析。
3、&。通常多个参数传递用“&”符号来隔开。如果keyword中包含&,就可能会导致传入结果并不是我们实际想传入的。
解决办法:第二和第三两种异常常是因为用户输入错误乱输入或者直接复制粘贴等等造成的,可以特殊字符替换为空字符。建议在URI函数之前,将#编码为%23,将&编码为%26。然后再URI函数之后将%2523替换为%23,将%2536替换为%26,之所以分开替换不直接.replace.(“%25”,”%”),因为有一种可能是用户输入”%”。
- JAVA后端,拼接URL访问,特殊字符异常处理
- java处理url特殊字符
- java处理url中的特殊字符
- java处理url中的特殊字符%等
- java处理url中的特殊字符%等
- java处理url中的特殊字符%等
- JAVA如何处理URL中的特殊字符
- java处理url中的特殊字符%等
- url 特殊字符处理
- url特殊字符处理
- 拼接url有中文和特殊字符
- URL特殊字符的处理
- url中特殊字符#处理
- url 中特殊字符处理
- URL特殊字符的处理
- URL中特殊字符处理
- iOS URL特殊字符处理
- java处理url中的特殊字符(如&,%...)
- MongoDB与python的交互
- 基于深度学习的目标检测技术演进(转)
- C++中的new和delete
- 【Scikit-Learn 中文文档】四十六:模型选择:选择估计量及其参数
- 学习js基础知识的疑惑及解答
- JAVA后端,拼接URL访问,特殊字符异常处理
- Unity本地持久化储存数据
- 重拾C语言
- 学习 Python 编程的 19 个资源
- 关于mysql慢查询
- linux 之 重启nginx
- 用better-scroll来解决ios中html5页面fixed布局不兼容问题的处理
- bootstrap 行内样式
- Linux命令