2

XML_RPC v2.5.0 for .Netを使用して、製品データを送信するためにWebサービスを数回呼び出しています。1つのシナリオを除いて、すべての呼び出しは正常に機能しています。以下のフォーマットが期待される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を正常に取得した場合に機能します。ただし、データテーブルに複数のレコードがある場合、次のような例外が発生します-

パラメーターは、XML-RPCタイプにマップできないCookComputing.XmlRpc.XmlRpcStructタイプであるか、そのインスタンスを含みます。

私はここで何かばかげたものが欠けていると思います。助けて、私がここでどんな間違いをしているのか教えてください。前もって感謝します!

4

2 に答える 2

0

このコード行を移動します

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

ループ内の最後の行にそれを機能させるためにb/cは、現在、辞書に1つの項目のみを追加します。

'dic'および'prod'オブジェクトがリストではなかったと私が思うもう1つの間違い。

あなたのコードは次のようになります:

`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

上記のコードは問題なく動作します。私の問題は、配列を渡すときに他のパラメーターの1つにnull値を渡すことであり、したがって問題でした。

于 2012-11-06T20:21:32.007 に答える