“membername”成员不是来自xml-rpc服务调用的类型base64错误

我正在使用Charles Cook的xml-rpc.net尝试进行xml-rpc服务调用。

请求需要以这种格式发送:

  leads      key  XXXXXXXXXXX    leads  PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGxlYWRzPgogICA8bGVhZD4K ICAgICAgPGlkPjM5OTk3PC9pZD4KICAgICAgPEZpcnN0TmFtZT5Cb2IgSmltPC9GaXJzdE5hbWU+ CiAgICAgIDxMYXN0TmFtZT5TbWl0aDwvTGFzdE5hbWU+CiAgICAgIDxBZGRyZXNzPjEyMzQgV2Vz : : ICAgICA8UmVjZWl2ZUFkZGxJbmZvPlllczwvUmVjZWl2ZUFkZGxJbmZvPgogICAgICA8bG9wX3dj X3N0YXR1cz5ObzwvbG9wX3djX3N0YXR1cz4KICAgPC9sZWFkPgo8L2xlYWRzPg==         

其中成员名称包含以下格式的多个标记:

     39997 Jim Smith 
1234 West 5th Street
Beverly Hills CA USA 90210 555-121-3322 Pacific mid day http://siteName.com/contact/ ?source=VendorName&leadid=VendorId&ad=SomeAd X-vendorid 39987 George : : No http://siteName.com/contact/ ?source=VendorName&leadid=VendorId&ad=SomeAd

webservice方法的文档要求一个包含两个值(值数组)的参数 – 键和引线。 包含潜在客户数据的xml文档必须打包为二进制对象。 此值必须命名为lead,且必须是base64类型。

这是我到目前为止失败的原因:

我的结构包含潜在客户信息 –

  [Serializable] public struct myLeads { public string id; public string first_name; public string last_name; } 

界面

  public interface ILead { [CookComputing.XmlRpc.XmlRpcMethod("leads", StructParams = true)] string NewLead(string key, myLeads leads); } 

最后,我初始化struct值并调用方法:

  myLeads newLead = default(newLeads); Guid guid = System.Guid.NewGuid(); newLead.id = guid.ToString(); newLead.first_name = "Test"; newLead.last_name = "LastNameTest"; newLead.address = "111 Test St"; var leadPost = (ILead)XmlRpcProxyGen.Create(typeof(ILead)); var clientProtocol = (XmlRpcClientProtocol)leadPost; clientProtocol.Url = "https://dashboard.sitename.com/webservices/rpc/xmlrpc"; try { result = leadPost.NewLead("XXXKeyXXX", newLead); Label1.Text = result; } catch (Exception ex) { throw ex; } 

我的代码在try块中抛出错误:lead成员不是base64类型! 如何正确设置?

提前致谢!

lead方法的参数应该是包含两个成员的结构或类,例如:

 public struct leadsParam { public string key; public byte[] leads; } 

接口将是

 public interface ILead { [XmlRpcMethod("leads")] string NewLead(leadsParam leads); }