v2011109 沙盒上的 Adwords API 出现 500 错误

Posted

技术标签:

【中文标题】v2011109 沙盒上的 Adwords API 出现 500 错误【英文标题】:500 error with Adwords API on v2011109 sandbox 【发布时间】:2011-12-09 14:31:46 【问题描述】:

我需要创建一个沙盒帐户:http://code.google.com/apis/adwords/docs/sandbox.html

不幸的是,我在针对他们提供的 WSDL 位置发出 GET 时遇到 500 错误,(没有这样的操作:(HTTP GET PATH_INFO: /v201109/CampaignService))

该链接指出:

要创建沙盒帐户,请向沙盒发送获取请求 CampaignService 版本,使用 WSDL 位置和沙箱 标题如下所述。这个对沙盒的初始调用会创建 用于电子邮件的 MCC 沙盒帐户以及五个客户帐户 您指定的地址。您的沙盒帐户及其客户帐户 一开始是空的。”

我创建了我的 authToken:

my $token = Google::Ads::Common::AuthToken::get_token(
    email    => EMAIL,
    password => PASSWORD,
    service  => "adwords"
);

但是,向指定的 WSDL 位置发出 GET 请求会导致 出现 500 错误,内容如下:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <soap:Fault>
      <faultcode>soap:Server</faultcode>
      <faultstring>No such operation:  (HTTP GET PATH_INFO: /v201109/CampaignService)</faultstring>
    </soap:Fault>
  </soap:Body>
</soap:Envelope>

我正在使用以下代码:

use HTTP::Request;
use LWP::UserAgent;
my $wsdl_location =
  'https://adwords-sandbox.google.com/api/adwords/cm/v201109/CampaignService';
my $req = HTTP::Request->new( GET => $wsdl_location );
$req->header(
    ":authToken"        => $auth_token,
    ":developerToken"   => EMAIL . '++USD',
    ":userAgent"        => 'weborama',
);

my $ua = LWP::UserAgent->new;

$ua->add_handler("request_send",  sub  shift->dump; return );
$ua->add_handler("response_done", sub  shift->dump; return );

my $res = $ua->request($req);

if ( $res->is_success ) 
    print $res->content;

else 
    print $res->status_line, "\n";

我的请求标头:

GET https://adwords-sandbox.google.com/api/adwords/cm/v201109/CampaignService
User-Agent: libwww-perl/6.02
authToken: *********
developerToken: EMAIL++USD
userAgent: weborama

有人用 Perl 和 v201109 完成这项工作吗?我错过了一些明显的东西吗? (Google Adwords API 论坛没有回复我)

【问题讨论】:

【参考方案1】:

我假设你想要https://adwords-sandbox.google.com/api/adwords/cm/v201109/CampaignService?wsdl

【讨论】:

这不是他们在沙盒描述中列出的 URL。但是,我确实尝试过,它只是返回 WSDL 服务的描述,实际上并没有做任何事情。话虽如此,我对 WSDL 知之甚少,而且这里非常缺乏 Google 的文档。 获取一个名为soapui的基于java的工具。掌握基本知识需要一个小时或更短的时间。它可以导入一个 wsdl 文件并为您生成一组测试。这将显示文档或代码是否有问题。 问题是您正在阅读 HTTP 而 Google 正在使用 SOAP。当他们说“向 CampaignService 的沙盒版本发送 get 请求”时,他们的意思是“对 CampaignService SOAP Web 服务进行 get 方法调用”。此外,通过请求标头,它们表示 SOAP 请求标头。你应该看看Google's Perl API 或Google::Adwords 虽然后者有点老了。 @Steve:非常感谢。看起来这就是我在这里遇到的问题。

以上是关于v2011109 沙盒上的 Adwords API 出现 500 错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥在我的 Paypal 沙盒上的 ios 应用程序中,买家可以取消付款?

如何在沙盒中使用 google adwords api? [关闭]

贝宝休息api

Paypal IPN 未在沙盒上发送/接收

Apple 在沙盒上推送通知

如何在贝宝沙盒中获取身份令牌?