繁体   English   中英

在XML-RPC中传递XmlRpcStruct数组会在C#中引发错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM