【问题标题】:How to encode xml doc as a base64 binary object如何将 xml doc 编码为 base64 二进制对象
【发布时间】:2012-06-02 00:42:56
【问题描述】:

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

键必须命名为“键”并且必须具有字符串类型的值。 Leads 是一个包含潜在客户数据的 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 将有助于确定您想要实现的目标......
  • 我现在正在添加编辑,但如果您不想等待 - 我在这里发布了一个不太集中的问题。 stackoverflow.com/questions/10855156/…

标签: c# encoding xml-rpc binary-data


【解决方案1】:

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

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

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

以下内容可能就足够了(但请尝试使用正确的方法为非一次性代码构造 XML):

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

【讨论】:

    猜你喜欢
    • 2014-11-06
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 2013-01-12
    相关资源
    最近更新 更多