使用SOAP和Javascript发送GET请求(Google Adwords Sandbox API)

时间:2011-09-15 07:24:44

标签: javascript soap google-adwords

我正在尝试访问Google Adwords Sandbox API,但在我的生活中,我无法弄清楚发生了什么。

这是我的代码:

        var wsUrl = "https://adwords-sandbox.google.com/api/adwords/cm/v201008/CampaignService";

        var soapRequest =
                '<soapenv:Envelope \
                xmlns:soapenv="http://schemax.xmlsoap.org/soap/envelope/" \
                xmlns="https://adwords.google.com/api/adwords/cm/v200906"> \
                <soapenv:Header> \
                <service>adwords</service> \
                <email>***@gmail.com</email> \
                <password>***</password> \
                <developerToken>***@gmail.com++USD</developerToken> \
                <useragent>MyApplication</useragent> \
                </soapenv:Header> \
                <soapenv:Body> \
                    <getClientAccounts/> \
                </soapenv:Body> \
                </soapenv:Envelope>';

        $.ajax({
            type: "GET",
            url: wsUrl,
            contentType: document.body,
            crossDomain: true,
            dataType: "jsonp",
            data: soapRequest,
            success: processSuccess,
            error: processError
        });

    });

    function processSuccess(data, status, req) {
        if (status == "success")
            console.log("success");
    }

    function processError(data, status, req) {
        console.log("status = " + status + " data= " + data );
    }

我不断收到500个内部服务器错误。我究竟做错了什么?!在Google Adwords Sandbox网站上,他们列出了简单的说明:

  

要创建沙箱帐户,请向沙箱版本发送get请求   CampaignService,使用WSDL位置和沙箱标题   如下面所描述的。对沙箱的初始调用会创建MCC   电子邮件的沙箱帐户以及五个客户帐户   您指定的地址。您的沙盒帐户及其客户帐户   从空开始。   http://code.google.com/apis/adwords/docs/sandbox.html

帮助!

1 个答案:

答案 0 :(得分:0)

AdWords API是一种SOAP API,因此将数据作为JSONP发送将不起作用。此外,带有跨域= true的$ .ajax仅适用于JSON或JSONP变体,除此之外的任何内容都将被浏览器的跨域策略停止。

您可以尝试浏览AdWords API Javascript客户端库 - 有关详细信息,请参阅http://code.google.com/p/google-api-adwords-js/

我们的主要讨论论坛位于http://groups.google.com/group/adwords-api?pli=1,我经常在那里回答开发人员的问题,所以如果您有任何后续问题,请随时提出问题,我很乐意回答您的问题。

干杯, Anash P. Oommen