URL编码问题和解决方式
URL编码相关的知识
图片和视频的URL地址中,path和参数均未编码,虽然目前大部分Http客户端能默认处理一些特殊字符,但是类似空格、=、+、&这些字符(串),http客户端默认无法处理,需要客户编码传入。
一些不符合URL编码的URL:
- 空格:HTTPclient默认则会截断,浏览器则会编码,编码为**%20或者+**。
- =:Httpclient和浏览器均不会做编码,虽然=是参数键值对的连接符,但目前也能通过判断=前面是否有”&key“的形式,编码为 %3D
- +:http客户端则会认为是空格的编码,但实际的编码为**%2B** (如下图)
- &:则认为是两个参数之间的连接符,编码为 %26。
问题URL比较
经排查,主要问题在:+,本意上是RSA或者BASE64编码产生的字符,因为HTTP客户端(包括浏览器)无法判定此处的“+”到底是空格的编码还是字符本身,因此在我们的程序中无法硬编码,只能在请求方确认其代表的含义。
解决方式
编码引入下面jar包:
1 | <dependency> |
代码中只需要一句话:
1 | String url = "https://sit-iot-media.oss-cn-beijing.aliyuncs.com/upload-temp/pic/20210421/17:16:20/0e2965e480814206834f58af95f13ea1.jpeg?Expires=1619082981&OSSAccessKeyId=LTAI4GByEtbtPtCKGaRbAkJV&Signature=rGSqvsMvNJ5mU+qFM25iQSejQ8s="; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 独特的留白!
评论