2012-03-07 3 views
0

私はデータベースを一定の間隔で使い、新しいアイテムを3DCartsデータベースに更新/追加するアプリケーションを作成しようとしています。そのコード例では、xmlファイル内のsoapを使用して呼び出しごとに1つの要求を送信します。だから私はそれを送信する前に、飛行中にアイテム情報と必要なXMLを生成することができる必要があります。私はこのようなXMLファイルをほとんど何もしておらず、必要なコードをどのように作成して送信するのか分からない。提案されている1つの方法は、ファイルを作成することですが、まだ実行することは問題であり、多数の項目に対して非常に非効率的です。私は最終的にサービス参照のセットアップを得たように、現在のコードブロックにサンプルコードのブロックから変更:ここで私はこれまでC#アプリケーションで3DCart APIを設定する

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); 

EDIT持っているものです。これらの関数は、参照内の関数を使用するための詳細は提供しません。このbcsResponseは空白ですが、.Bodyを追加しようとすると同じ結果が出ますが.Bodyに.runQueryを追加すると、 "オブジェクト参照がオブジェクトのインスタンスに設定されていません"が表示されます。エラー。私が言ったように、私は前にサービス参照を混乱させていません。

私は十分に説明して欲しいと思っています。以前はこの種のものでは実際に作業していなかったので、非常にイライラしました。

ありがとうございました。

答えて

1

私は実際にそれを使って遊んだ後、これを理解することになりました。ここで、私が参考になるようにしたのです。これは前に参照を使用した人にとっては簡単だったかもしれませんが、他に誰かがこの問題を抱えている場合に備えて私はこれを投稿しないと決めました。 SQLはSELECT、ADD、UPDATE、およびDELETEステートメントになります。これは、スキューが更新/追加前にリストされていたかどうかを確認するためのものです。

  //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); 

また、あなたは、PDFの言うように実際のオプションがありません気づくこととして、あなたは自分の店と購入(その無料)に移動し、彼らのために待機する必要があなたのお店に高度なAPIを有効にする必要がありますそれをアクティブにする。これは私たちにとって約2時間かかりました。

+1

この例はありがとうございます。私は3dCartのAPIのサンプルをウェブ全体で見てきてくれました。 –

+0

問題はありません。私が作業していたときのドキュメントが恐ろしいため、誰かを助けることができてうれしいです。 – Gyouza

関連する問題