2

我正在使用 XML_RPC v2.5.0 for .Net 对 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 类型

我想我在这里遗漏了一些愚蠢的东西。请帮助并让我知道我在这里犯了什么错误。提前致谢!

4

2 回答 2

0

移动这行代码

`dic.Add("products", prod);` 

到循环中的最后一行以使其工作 b/c 目前仅将单个项目添加到您的字典中。

另一个错误是我认为“dic”和“prod”对象不是列表。

你的代码假设是:

`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);`
于 2012-10-22T15:54:11.550 回答
0

上面写的代码工作正常。我的问题是在传递数组时将空值传递给其他参数之一,因此出现了问题。

于 2012-11-06T20:21:32.007 回答