“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); }