[英]Passing array of XmlRpcStruct in XML-RPC throws error in C#
我正在使用.Net的XML_RPC v2.5.0,以很少调用Web服务来发送产品数据。 除一种情况外,所有通话均正常。 我正在将产品数据发送到Web服务,该数据应采用以下格式(格式是用PhP语言定义的)-
$order['products'][] = ['sku', 'quantity']
我正在使用以下代码传递此数据-
XmlRpcStruct dic = new XmlRpcStruct();
DataTable dt1 = GetData();
XmlRpcStruct[] prod = new XmlRpcStruct[dt1.Rows.Count];
for (int i = 0; i < dt1.Rows.Count; i++)
{
prod[i] = new XmlRpcStruct();
prod[i].Add("sku", dt1.Rows[i][0].ToString());
prod[i].Add("quantity", dt1.Rows[i][1].ToString());
}
dic.Add("products", prod);
object orderID = proxy.SubmitOrder(dic, custID, accessKey);
当数据表dt1中只有1行并且我成功获取了orderID时,以上代码有效。 但是,如果数据表中有1条以上的记录,我将收到一个异常,因为-
参数属于CookComputing.XmlRpc.XmlRpcStruct类型,或包含其实例,该参数无法映射到XML-RPC类型
我想我在这里错过了一些愚蠢的事情。 请帮助,让我知道我在这里犯了什么错误。 提前致谢!
移动这行代码
`dic.Add("products", prod);`
到循环中的最后一行以使其b / c正常工作,目前它仅将单个项目添加到字典中。
我认为“ dic”和“ prod”对象不是List的另一个错误。
您的代码应该是:
`List<XmlRpcStruct> dic = new List<XmlRpcStruct>();
for (int i = 0; i < dt1.Rows.Count; i++)
{
List<XmlRpcStruct> prod = new List<XmlRpcStruct>();
prod.Add("sku", dt1.Rows[i][0].ToString());
prod.Add("quantity", dt1.Rows[i][1].ToString());
dic.Add("products", prod); //this line might be a culprit
}
object orderID = proxy.SubmitOrder(dic, custID, accessKey);`
上面编写的代码可以正常工作。 我的问题是在传递数组时将空值传递给其他参数之一,因此产生了问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.