0

SOAP & WSDL ( http://wiki.affiliatewindow.com/index.php/Affiliate_service_APIV3 )を介して(Googleスプレッドシートのスクリプト・エディタを介して)APIに接続しようとしています。

例 (上のリンクから) によると、「UserAuthentication」と「getQuota」の 2 つの要素を持つ必要があるヘッダー XML オブジェクトの作成に苦労しています。ユーザー認証のみでヘッダーを送信すると、応答でサーバーエラーが発生します。両方の要素を送信しようとすると、認証エラーが発生します。

どんな助けでも大歓迎です!

** 更新 ** 認証ヘッダーは機能しているようです (または、少なくともエラーを返していません)。私が今得ているエラーは、「Procedure 'getTransactionList' not present」です(存在するはずです)。

これまでの私のコードは次のとおりです。

function testSOAP() {
// Affiliate Window API from here
  var wsdl = SoapService.wsdl("http://api.affiliatewindow.com/v3/AffiliateService?wsdl");

  var apiService = wsdl.getService( wsdl.getServiceNames() );
  //Logger.log(apiService); // ApiService

  var headerA = [
    "ns1:UserAuthentication",
    { "SOAP-ENV:mustUnderstand" : "true" },
    { "SOAP-ENV:actor" : "http://api.affiliatewindow.com" },
    [ "ns1:iId", "******" ],
    [ "ns1:sPassword", "**************************************" ],
    [ "ns1:sType", "affiliate" ]
  ];
  var headerQ = [
    "ns1:getQuota", "true"
  ];

  var paramJ = [
    "ns1:getTransactionList",
    [ "ns1:dStartDate", "2011-08-01T00:00:00" ],
    [ "ns1:dEndDate", "2011-08-30T23:59:59" ],
    [ "ns1:sDateType", "transaction" ]
  ];
  // I read that the paramaters should be sent as an XML element, not JSON (as above)
  // but neither of the formats seem to work
  var paramX = Xml.element("ns1:getTransactionList", [
                           Xml.element("ns1:dStartDate", ["2011-08-01T00:00:00"]),
                           Xml.element("ns1:dEndDate", ["2011-08-30T23:59:59"]),
                           Xml.element("ns1:sDateType", ["transaction"])
  ]);

  // this returns the generated xml that will be sent
  var result = apiService.getSoapEnvelope("getTransactionList", paramX, [headerA, headerQ]);
  Logger.log(result);

  var transL = apiService.getOperation("getTransactionList");
  //Logger.log(transL);

  var env = transL.invokeOperation([paramJ], [headerA, headerQ]);
  Logger.log(env);

  Logger.getLog();
}
4

1 に答える 1

0

Apps Script Soap Services を使用したことはありませんが、ヘッダーに 1 次元配列を試したことはありますか? (2次元のものを使用しているため)。例えば

var header = [headerA, headerQ]; //your snippet had "extra" brackets

var result = apiService.invokeOperation("getTransactionList", [param], header);
Logger.log(result);
于 2012-05-08T17:51:12.367 に答える