栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

URI编码的URL将“%3D”更改为“%253D”

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

URI编码的URL将“%3D”更改为“%253D”

首先,将(已经转义的)字符串放入

URL
类中。那没有逃脱。然后,您将取出的部分
URL
,而无需进行进一步处理即可返回它们的部分(因此-
它们仍然是转义的,因为当您将它们放入时已经转义了)。最后,
URI
使用多参数构造函数将各节放入类中。该构造函数被指定为使用百分比对URI组件进行编码。

因此,例如,在最后一步中,“

:
”变成“
%3A
”(好),而“
%3A
”变成“
%253A
”(差)。由于您要输入已经编码的URL
*,因此您不想再次对其进行编码。

因此,单参数的构造函数的

URI
是你的朋友。它不会转义任何内容,并且要求您传递预转义的字符串。因此,您根本不需要
URL

mUrl = "A string url is already percent-enpred for use in a new HttpGet()";URI uri = new URI(mUrl);

*唯一的问题是您的URL有时不是百分比编码的,有时是不是。然后,您有一个更大的问题。您需要确定程序是从始终编码的URL还是需要编码的URL开始。

请注意,有 没有这样的事情 作为一个完整的URL这是不是百分比编码。例如,您不能使用完整的URL“

http://example.com/bob&co
”并以某种方式将其转换为正确编码的URL“
http://example.com/bob%26co

–您如何分辨语法(不应转义)和字符(应避免转义)之间的区别)?这就是为什么单参数形式的
URI
要求字符串已经转义的原因。如果您有未转义的字符串,则需要先对其进行百分比编码,然后
再将其 插入完整的URL语法中,这就是多参数构造函数
URI
可以帮助您完成的工作。

编辑:
我错过了原始代码丢弃该片段的事实。如果您要删除网址的片段(或其他任何部分),则可以

URI
按照上述方法构造,然后根据需要拉出所有部分(它们将被 解码
为常规字符串),然后将它们传递回
URI
多参数构造函数(将它们 重新编码 为URI组件):

uri = new URI(uri.getScheme(), uri.getUserInfo(), uri.getHost(), uri.getPort(),   uri.getPath(), uri.getQuery(), null)  // Remove fragment


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/428449.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号