簡體   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