使用C#App设置3DCart API

时间:2012-03-07 17:20:49

标签: c# xml

我一直在尝试创建一个应用程序,以设定的间隔浏览我们的数据库,并将任何新项目更新/添加到3DCarts数据库。他们的代码示例在xml文件中使用soap来为每次调用发送1个请求。所以我需要能够在发送之前动态生成项目信息所需的xml。我对这样的XML文件几乎没有做任何事情,也无法弄清楚如何创建我需要的代码块并发送它。已经提出的一种方法是创建文件但仍然执行一直是一个问题,对于大量项目来说效率非常低。这是我到目前为止所拥有的

    sqlStatement = "SELECT * FROM products WHERE name = '" + Convert.ToString(reader.GetValue(0)) + "'";
            ServiceReferenceCart.cartAPIAdvancedSoapClient bcsClient = new ServiceReferenceCart.cartAPIAdvancedSoapClient();
            ServiceReferenceCart.runQueryResponse bcsResponse = new ServiceReferenceCart.runQueryResponse();

            bcsClient.runQuery(storeUrl, userKey, sqlStatement, callBackURL);
            string result = Convert.ToString(bcsResponse);

            listBox1.Items.Add(result);

编辑:当我最终获得服务参考设置时,从示例代码块更改为当前代码块。但是,它们没有提供使用参考中的功能的详细信息。有了这个bcsResponse只是一个空白,当我尝试添加.Body我有相同的结果但是当我将.runQuery添加到.Body时,我得到一个“对象引用未设置为对象的实例。”错误。正如我所说,我之前没有搞过服务引用。

我希望我已经解释得很好,我以前真的没有使用过这种东西而且它变得非常令人沮丧。

提前感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我实际上在玩完它之后最终搞清楚了。以下是我为获取工作参考所做的工作。对于之前使用过这些参考文献的人来说,这可能很容易,但我还没有,并决定发布这个以防其他人有这个问题。 SQL可以是SELECT,ADD,UPDATE和DELETE语句,这是为了查看在更新/添加之前是否列出了sku。

            //Will be using these multiple times so a variable makes more sense
            // DO NOT include http:// in the url, also id is not shown in their
            //database layout pdf they will give but it is the sku/product number
            string sqlStatement = "SELECT id FROM products WHERE id = '" + Convert.ToString(reader.GetValue(0)) + "')))";
            string userKey = "YourKeyHere";
            string storeUrl = "YourStoresURLHere";

            // Setting up instances from the 3DCart API
            cartAPIAdvancedSoapClient bcsClient = new cartAPIAdvancedSoapClient();
            runQueryRequest bcsRequest = new runQueryRequest();
            runQueryResponse bcsResponse = new runQueryResponse();
            runQueryResponseBody bcsRespBod = new runQueryResponseBody();
            runQueryRequestBody bcsReqBod = new runQueryRequestBody();

            //assigning required variables to the requests body
            bcsReqBod.storeUrl = storeUrl;
            bcsReqBod.sqlStatement = sqlStatement;
            bcsReqBod.userKey = userKey;

            //assigning the body to the request
            bcsRequest.Body = bcsReqBod;

            //Setting the response body to be the result
            bcsRespBod.runQueryResult = bcsClient.runQuery(bcsReqBod.storeUrl, bcsReqBod.userKey, bcsReqBod.sqlStatement, bcsReqBod.callBackURL );
            bcsResponse.Body = bcsRespBod;

            //adding the result to a string
            string result = bcsResponse.Body.runQueryResult.Value;

            //displaying the string, this for me was more of a test
            listBox1.Items.Add(result);

您还需要在商店中激活高级API,因为您可能会注意到没有实际选项,因为pdf说,您需要去他们的商店购买(免费)并等待他们激活它。我们花了大约2个小时。