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 应用程序中,买家可以取消付款?