I am using perl, no client lib, accessing TargetingIdeaService get
method. The selector is not being seen, as the selector.
I am sure I am missing something really simple and stupid here.
Here is the code:
-----
use Google::AdWords::AuthToken ();
# ...
my $token;
eval {
$token = Google::AdWords::AuthToken::get_token({
email => $ADW_EMAIL,
password => $ADW_PASSWORD,
});
};
# ...
my $service = SOAP::Lite->service($wsdl)->autotype(0)->readable(1)-
>proxy($url);
# ...
eval {
$service->on_fault(
sub {
my $response = $_[1];
$msg = "The following SOAP fault occurred:\n" .
" faultcode: " . $response->faultcode() . "\n" .
" faultstring: " . $response->faultstring() .
"\n";
print $msg;
}
);
};
# ...
my $soap_header = SOAP::Header->name('RequestHeader' =>
\SOAP::Header->value(
SOAP::Header->name('authToken' => $token),
SOAP::Header->name('clientEmail' => $ADW_CLIENT_EMAIL),
SOAP::Header->name('userAgent' => $ADW_USERAGENT),
SOAP::Header->name('developerToken' =>
$ADW_DEVELOPER_TOKEN),
SOAP::Header->name('applicationToken' =>
$ADW_APPLICATION_TOKEN),
SOAP::Header->name('alternateUrl' => 'https://adwords-
sandbox.google.com'),
));
# tried setting soap_action... and passing in for some tests, still
didn't work
my $soap_action = SOAP::Data->name('get')->attr({'xmlns' =>
$namespace});
# ...
my $selector = SOAP::Data->name('selector' => {
'searchParameters' => [
{
'type' => 'RelatedToKeywordSearchParameter',
'keywords' => [
{
'text' => 'flowers',
'matchType' => 'BROAD',
},
]
},
{
'type' => 'LanguageTargetSearchParameter',
'languageTargets' => [
{'languageCode' => $LANGUAGE},
]
},
{
'type' => 'CountryTargetSearchParameter',
'countryTargets' => [
{'countryCode' => $COUNTRY},
]
},
],
'ideaType' => 'KEYWORD',
'requestType' => 'IDEAS',
'paging' => {
'startIndex' => '0',
'numberResults' => '10',
}
});
# ...
my $som = '';
my $som_results = '';
eval {
$som = $service->get('TargetingIdeaSelector'=>$selector,
$soap_header);
if (defined($som) && $som) {
$som_results = $som->result();
}
};
if ($@) {
print "Error while making SOAP request for keyword\n";
}
-----
I am pretty sure the problem is the ->get() call. I have tried
several different soap service calls, using ->get (as shown above),
and using the older ->call method as well, using the soap_action, to
access the get method.
I have tried ->get($selector,$soap_header), does not even see the
$selector data,
or with something as parameter #1 (as in the above call), I see the
selector data, but the soap/wsdl interface does not see the selector
as being the selector, as can be seen below in the soap debug output:
soap debug results:
-----
SOAP::Transport::HTTP::Client::send_receive: POST
https://adwords-sandbox.google.com/api/adwords/o/v200909/TargetingIdeaService
HTTP/1.1
Accept: text/xml
Accept: multipart/*
Accept: application/soap
Content-Length: 2454
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns="https://adwords.google.com/api/adwords/o/v200909">
<soap:Header>
<RequestHeader>
<authToken>xxxxxx</authToken>
<clientEmail>xxxxxx</clientEmail>
<userAgent>xxxxxx: AdWords API Perl Sample Code</userAgent>
<developerToken>xxxxxx</developerToken>
<applicationToken>xxxxxx</applicationToken>
<alternateUrl>https://adwords-sandbox.google.com</alternateUrl>
</RequestHeader>
</soap:Header>
<soap:Body>
<tns:get>
<selector xsi:nil="true" xsi:type="tns:TargetingIdeaSelector" />
<selector>
<ideaType>KEYWORD</ideaType>
<paging>
<startIndex>0</startIndex>
<numberResults>10</numberResults>
</paging>
<requestType>IDEAS</requestType>
<searchParameters>
<c-gensym12>
<keywords>
<c-gensym13>
<text>flowers</text>
<matchType>BROAD</matchType>
</c-gensym13>
</keywords>
<type>RelatedToKeywordSearchParameter</type>
</c-gensym12>
<c-gensym14>
<languageTargets>
<c-gensym15>
<languageCode>en</languageCode>
</c-gensym15>
</languageTargets>
<type>LanguageTargetSearchParameter</type>
</c-gensym14>
<c-gensym16>
<countryTargets>
<c-gensym17>
<countryCode>US</countryCode>
</c-gensym17>
</countryTargets>
<type>CountryTargetSearchParameter</type>
</c-gensym16>
</searchParameters>
</selector>
</tns:get>
</soap:Body>
</soap:Envelope>
-----
Please let me know if you need additional information.
Thanks!
JohnM
--
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Have you migrated to v200909 yet?
The v13 sunset is on April 22, 2010.
Also find us on our blog and discussion group:
http://adwordsapi.blogspot.com
http://groups.google.com/group/adwords-api
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
You received this message because you are subscribed to the Google
Groups "AdWords API Forum" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/adwords-api?hl=en