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

C# 如何将xml文档编码为base64二进制对象,c#,encoding,xml-rpc,binary-data,C#,Encoding,Xml Rpc,Binary Data,我试图调用一个XMLRPCWeb服务方法,该方法接受1个参数(一个值数组)键和lead 键必须命名为“键”,并且必须具有字符串类型的值。 Leads是包含Leads数据的xml文档。它必须打包为二进制对象。此值必须是命名的leads,并且必须是base64类型 好的,python中这个方法调用的单个参数是: r = proxy.leads({'key': key, 'leads': doc}) 我的第一个问题是如何在c#中实现这一点?与.net最接近的是dictionary对象,它对此不起作

我试图调用一个XMLRPCWeb服务方法,该方法接受1个参数(一个值数组)键和lead

键必须命名为“键”,并且必须具有字符串类型的值。 Leads是包含Leads数据的xml文档。它必须打包为二进制对象。此值必须是命名的leads,并且必须是base64类型

好的,python中这个方法调用的单个参数是:

 r = proxy.leads({'key': key, 'leads': doc})
我的第一个问题是如何在c#中实现这一点?与.net最接近的是dictionary对象,它对此不起作用

其次,如何使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>

引导
钥匙
XXXXXXXXXX
引导
PD94BWGDMVYC2LVBJ0IMS4WIILBMNVZGLUZZ0IVVRGLTGIPZ4KPGXLYWRZPGOGICA8BGVHZD4K
ICAGICAGPLKPJM5OTK3PC9PZD4KICAGICAGPEZPCNN0TMFTZ5CB2IGSMLTPC9GAXJZDE5HBWU+
CIAGICAGIDxMyxN0TMFTT5TBWL0ADWVTGFZDE5HBWU+CIAGICAGIDxBzGryZNZPJeymzQGV2VZ
:
:
ICAGICA8UMVJZWL2ZUFKZGXJBMZVPLLCZWVUMVJZWL2ZUFKZGXJBMZVPGOGICA8BG9WX3DJ
X3N0YXR1CZ5OBZWVBG9WX3DJX3N0YXR1CZ4ICAGPC9SZWFKPGO8L2XLYWRZPG==
我完全被这个问题困住了。任何帮助都将不胜感激

查看此信息,了解如何手动调用该服务。可能有一些图书馆可以很好地做到这一点

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

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

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


String.Format(“示例数据+预期的XML”将有助于了解您想要实现的目标…我现在正在添加编辑,但如果您不想等待,我在这里发布了一个不太集中的问题。
String.Format("<?xml versi... <name>key</name><value><string>{0}</string>...", 
      key, Convert.ToBase64String(byteArray));