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