http、https请求URL中带有&等特殊字符的解决方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http、https请求URL中带有&等特殊字符的解决方法相关的知识,希望对你有一定的参考价值。
参考技术A 一般http、https请求有POST、GET、DELETE、PUT方式,通常使用POST、GET两种1、GET方式:一般将参数拼接在请求的url路径中,多个参数之间用&符号连接,此时如果参数中带有&等特殊符号,就会在解析url时将参数截断,导致传递的参数错误,请求也就出问题了,此时可以使用escape()、encodeURIComponent()函数来编码url,一般查询使用get方法。
2.POST方式:一般会将参数封装在data中,若路径中参数带有&特殊符号,最好将参数写在data中,这样就可以避免&带来的问题,一般增删改使用post方法。
远程http请求时,后缀带空格,请求报错问题(类似word文档标题中带空格)
当我们远程请求一个链接,类似:http://nbcb.ningbobank.test:8088/approve/goFile/我的 带 空格 的文档.docx?operate
的时候,我们要下载的时候,会报url错误,虽然我们在浏览器的地址栏可以访问,但是我们用方法进行读取下载的时候,就会报地址不存在的错误。
这主要是因为我们的url路径中带有空格,阻止了我们进行访问 。
要想有效的进行下载访问,我们需要将最后的"/"后面的和"."前面的进行encode编码,这样我们再进行访问下载的时候就可以进心下载了。
例如:
String urlPath="http://nbcb.ningbobank.test:8088/approve/goFile/我的 带 空格 的文档.docx?operate";
// http://nbcb.ningbobank.test:8088/approve/goFile/
String headPath= urlPath.subString( 0 , urlPath.lastIndexOf("/")+1);//subString进行截取的时候,不包括最后一位,所以我们要的得到最后以为“/”就要加一;
// 我的 带 空格 的文档
String middlePath=urlPath.subString( urlPath.lastIndexOf("/")+1, urlPath.lastIndexOf(".") );// "/" 和 "."一定不要截取,不然编码的时候会将其进行编码。
// .docx?operate
String endPath=urlPath.subString( urlPath.lastIndexOf(".") );
接下来我们将middlePath进行urlEncode编码。
middlePath=URLEncoder.encode(middlePath);//会将空格和中文进行编码 java.net.URLEncoder
然后我们将所有的字符串进行拼接,然后进行http请求
String requestPath=headPath+middlePath+endPath;
我们拿到了最终请求的url,这样再进行http请求的时候,下载就不会报错了。
以上是关于http、https请求URL中带有&等特殊字符的解决方法的主要内容,如果未能解决你的问题,请参考以下文章