java - 如何使用映射到“%20”而不是“+”的空格对 XML 字符串进行编码?
问题描述
我有以下有效的 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
当我对此进行解码时,例如使用此解码器,我得到以下解码的 XML 文档:
<bundle><elem+type="A"></elem></bundle>
这确实是一份有效的文件。但是,当我将它作为查询参数发送到第三方 Web 服务时,服务会拒绝它,即使我将 Content-Type 标头设置为 application/x-www-form-urlencoded,这是 URLEncoder 使用的格式.
问题在于加号。如果我手动将此加号更改为“%20”,服务将接受我的请求。
我的问题是,有没有办法对 XML 字符串进行编码,以便将空格映射到“%20”而不是“+”?
解决方案
嗨,我认为以下链接会有所帮助 URLEncoder 无法翻译空格字符
一个问题,为什么你需要基于 URL 的编码功能来编码你的 xml?
推荐阅读
- rust - 不关心拥有子结构的递归数据类型
- javascript - 单击另一个组件后无法解决组件中的参数错误
- bash - 使用 awk/sed 将列值替换为多个文件的某些行值
- java - ShareCompat.IntentBuilder - 如何删除自己的应用程序
- flask - 烧瓶登录:current_user 返回无
- html - 可访问性:YouTube 嵌入代码应具有标题属性
- namespaces - 如何在 Elixir Phoenix iex 控制台中停止强制模块命名空间?
- mysql - 在 SQL 中从多行创建一行
- python - 面板数据组的迭代和差异
- php - 需要在 laravel 中使用 DB::commit 两次以使事务正常工作