【问题标题】:Converting XML tags to Hexadecimal将 XML 标记转换为十六进制
【发布时间】:2017-08-15 21:38:33
【问题描述】:

我们尝试连接的外部系统仅接受以十六进制编码的 XML 有效负载。

For example;
<   3C
>   3E
/   2F
"   22

在 BizTalk 中处理此问题的最佳方法是什么?此外,它应该只替换标签而不是数据。目前正在运行 BizTalk 2016

【问题讨论】:

  • 这毫无意义。它如何区分编码标签和恰好是有效十六进制数字的实际内容?
  • 标签前会有'%'。例如; 123-456-7890 将被转换为 %3CSSN%3E123-456-7890%3C%2F%3E 有意义吗?
  • 首先,您绝对确定这是一个真实的要求并且没有办法解决吗?这太离谱了,这……嗯……难以置信。
  • 哈哈哈.. 我是 1000%。我们这样做的原因是因为他们系统的安全问题。据我所知,这必须在管道上完成。我已经测试过通过邮递员发送有效载荷,它只有在我们将其转换为十六进制后才能工作。话虽如此,在管道到达发送端口之前,我将如何在管道上开发类似的东西?

标签: xml character-encoding biztalk urlencode


【解决方案1】:

您是否以十六进制文本形式发送您的有效负载?您有多种选择,最准确的可能是实现一个汇编器,将 XML 字符更改为等效的十六进制值,将其添加到发送管道并在您的发送端口上使用发送管道。

【讨论】:

  • 是的,我将有效负载作为十六进制文本发送。只是标签,而不是实际的文本。 SSN> 123-456-7890 将作为 %3CSSN%3E123-456-7890%3C%2F%3E 发送 我对 BizTalk 很陌生,从未玩过汇编程序。让我google一下看看。谢谢。
  • 您生成平面文件?或者您正在调用外部网络服务?
  • 我正在调用网络服务。
  • 那么这个十六进制文本是Web Service的参数吗?
  • 不,是负载本身。我们必须对有效负载进行编码并将标签替换为十六进制表示。例如,此 SSN 123-456-7890 的 xmk 将转换为 %3CSSN%3E123-456-7890%3C%2F%3E 。有意义吗?
【解决方案2】:

所以...首先,是的,您认为这有点愚蠢并且对“安全”没有一点帮助是正确的:(...实际上,它引起了我对安全性的担忧...

接下来你需要做的是告诉你管理层,由于他们非常、非常不寻常和不必要的要求,你将不得不花费额外的时间和他们的钱来容纳这个接收器。 这不是 BizTalk Server 的问题。

最后,处理这个问题的正确方法是在编码管道组件中。实际实现非常简单,你必须逐字节读取 Stream,将转义的标记字符写入输出流。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 2015-11-11
    • 2013-07-20
    相关资源
    最近更新 更多