如何将 xml 文档编码为 base64 二进制对象

本文关键字:base64 二进制 对象 编码 文档 xml | 更新日期: 2023-09-27 18:36:08

>我正在尝试调用一个 xml-rpc Web 服务方法,该方法采用 1 个参数(值数组)键和线索。

键必须

命名为"键",并且必须具有字符串类型的值。潜在顾客是包含潜在顾客数据的 xml 文档。这必须打包为二进制对象。此值必须命名为潜在顾客,并且类型必须为 base64。

好的,所以在python中此方法调用的SINGLE参数是:

 r = proxy.leads({'key': key, 'leads': doc})

我的第一个问题是如何在 c# 中执行此操作?.net 最接近的是字典对象,它不适用于此。

其次,如何使 xml 文档成为 base64 类型的二进制对象?这与将 byte[] 数组转换为 base64 字符串相同吗?喜欢这个:

 Convert.ToBase64String(byteArray)

以下是请求应如下所示:

 <?xml version="1.0" encoding="iso-8859-1"?>
 <methodCall>
 <methodName>leads</methodName>
 <params>
 <param>
 <value>
 <struct>
  <member>
  <name>key</name>
 <value>
 <string>XXXXXXXXXXX</string>
 </value>
 </member>
 <member>
 <name>leads</name>
 <value>
 <base64>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGxlYWRzPgogICA8bGVhZD4K
      ICAgICAgPGlkPjM5OTk3PC9pZD4KICAgICAgPEZpcnN0TmFtZT5Cb2IgSmltPC9GaXJzdE5hbWU+
      CiAgICAgIDxMYXN0TmFtZT5TbWl0aDwvTGFzdE5hbWU+CiAgICAgIDxBZGRyZXNzPjEyMzQgV2Vz
      :
      :
      ICAgICA8UmVjZWl2ZUFkZGxJbmZvPlllczwvUmVjZWl2ZUFkZGxJbmZvPgogICAgICA8bG9wX3dj
      X3N0YXR1cz5ObzwvbG9wX3djX3N0YXR1cz4KICAgPC9sZWFkPgo8L2xlYWRzPg==
 </base64>
 </value>
 </member>
 </struct>
 </value>
 </param>
 </params>
 </methodCall>

我完全被这个问题困住了。任何帮助将不胜感激。

如何将 xml 文档编码为 base64 二进制对象

http://codinghints.blogspot.com/2010/03/xml-rpc-calls-with-c.html 查看此内容,了解如何手动调用该服务。可能有图书馆可以很好地做到这一点......

指定参数的方式取决于您找到的构造请求的方法。在手动构造请求的情况下(我建议XDocument构建XML,而不是String.Format,但在非常简单的情况下,例如您的示例),您只需将值放在样板XML的正确位置...

是的,到 base64 的字节数组是 Convert.ToBase64String(byteArray) .

像下面这样的东西可能就足够了(但请尝试使用正确的方法来为非一次性代码构造 XML):

String.Format("<?xml versi... <name>key</name><value><string>{0}</string>...", 
      key, Convert.ToBase64String(byteArray));