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

Posted

技术标签:

【中文标题】使用 SOAP 和 Javascript(Google Adwords Sandbox API)发送 GET 请求【英文标题】:Sending a GET request using SOAP and Javascript (Google Adwords Sandbox API) 【发布时间】:2011-09-15 07:24:44 【问题描述】:

我正在尝试访问 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 网站上,他们列出了简单的说明:

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

救命!

【问题讨论】:

把header的内容Accept as application/soap+xml?? 你的意思是把&lt;meta content-type="application/soap+xml"&gt;加到head body中吗?不幸的是,它没有任何区别 【参考方案1】:

AdWords API 是一种 SOAP API,因此无法以 JSONP 格式发送数据。此外,带有 cross-domain=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

【讨论】:

以上是关于使用 SOAP 和 Javascript(Google Adwords Sandbox API)发送 GET 请求的主要内容,如果未能解决你的问题,请参考以下文章

html 此代码块使用工作流Web服务为javascript启动工作流,jquery运行soap操作

通过 Ajax Javascript 调用 SAP SOAP Web 服务——绕过跨域策略

javascript AJAX通过SOAP访问的WebService

html 通过JavaScript测试SharePoint soap服务

html+javascript+soap获取webservice免费天气预报信息

C# 序列化与反序列化Serialization之Json Xml Binary Soap JavaScript序列化