【发布时间】:2020-04-09 23:50:04
【问题描述】:
我有以下有效的 XML 文档:
<bundle><elem type="A"></elem></bundle>
我想对这个 XML 字符串进行编码,以便将其发送到第三方 Web 服务。此服务要求将 XML 编码为查询参数进行发送。我正在尝试使用 URLEncoder 对我的 XML 进行编码,如下所示:
rawXml = "<bundle><elem type=\"A\"></elem></bundle>";
encodedXML = URLEncoder.encode(rawXML, "UTF-8");
这会生成以下编码字符串:
%3Cbundle%3E%3Celem+type%3D%22A%22%3E%3C%2Felem%3E%3C%2Fbundle%3E
当我对此进行解码时,例如使用this decoder,我得到以下解码后的 XML 文档:
<bundle><elem+type="A"></elem></bundle>
这确实是一份有效的文件。但是,当我将它作为查询参数发送到第三方 Web 服务时,服务会拒绝它,即使我将 Content-Type 标头设置为 application/x-www-form-urlencoded,这是 URLEncoder 使用的格式.
问题在于加号。如果我手动将此加号更改为“%20”,服务将接受我的请求。
我的问题是,有没有办法对 XML 字符串进行编码,以便将空格映射到“%20”而不是“+”?
【问题讨论】:
-
如果你用 URLEncoder 编码,用URLDecoder 解码不是有意义吗?