Hi all,

Would really appreciate your help. This is probably more of a Perl /
SOAP than adwords API question, but I've spent hours trawling the
internet for an answer to this and cannot find it, so I'm hoping you
can help :). I'm relatively new to Perl and SOAP, and I'm trying to
implement a connection to the Google Adwords API using SOAP::Lite. I
have it almost working but however I try and get a return value from
SOAP::SOM (e.g. using valueof or result) I only seem to get the last
element. Even calling valueof("//Body") just gives me one element. I
have tried debugging the code and using Dumper, but the SOAP::Lite
code is quite unreadable (at least to me :)
and I can't work out whats going on. I've tried implementing this
directly both using SOAP::Lite and via Google::Adwords, and they both
have the same behaviour.

This what I get from valueof("//Body):

$VAR1 = {
'getKeywordVariationsResponse' => {

'getKeywordVariationsReturn' => {

'moreSpecific' => {

'searchVolumeScale' => '2',

'language' => '',

'text' => 'trusted places 1',

'advertiserCompetitionScale' => '3'

}

}
}
};

But I know there is more than one KeywordVariation from using Dumper
on the SOAP::SOM object.

This is the code I am using, its basically the example provided by
Google:

use strict;
use warnings;
use English '-no_match_vars';
use SOAP::Lite;
use Data::Dumper;
binmode(STDOUT, ':utf8');

# Provide AdWords login information.
my $email = '';
my $password = '';
my $client_email = 'client_1+dan.j.rog...@gmail.com';
my $useragent = 'QYPE: AdWords API Perl Sample Code';
my $developer_token = 'dan.j.rog...@gmail.com++usd';
my $application_token = 'INSERT_APPLICATION_TOKEN_HERE';

# Set up service connection with autotyping disabled and fault handler
# registered. To send requests to production environment, replace
"sandbox" with
# "adwords". To view XML request/response, uncomment
# "SOAP::Lite->import(+trace => 'debug');".
my $url =
sprintf('https://%s.google.com/api/adwords/v12/KeywordToolService',
'sandbox');

my $wsdl = $url . '?wsdl';

my $service =
SOAP::Lite->service($wsdl)->autotype(0)->readable(1)->proxy($url);

$service->on_fault(sub {
my $response = $ARG[1];
die('The following SOAP fault occurred:', "\n",
' faultcode: ', $response->faultcode(), "\n",
' faultstring: ', $response->faultstring(),
"\n")
});
SOAP::Lite->import(+trace => 'debug');

# Define SOAP headers.
my @headers = (
SOAP::Header->name('email' => $email),
SOAP::Header->name('password' => $password),
SOAP::Header->name('clientEmail' => $client_email),
SOAP::Header->name('useragent' => $useragent),
SOAP::Header->name('developerToken' => $developer_token),
SOAP::Header->name('applicationToken' => $application_token)
);

# Create seed keyword structure.
my $seed_keyword = {
'negative' => 'false',
'text' => 'trusted places',
'type' => 'Broad',
};

my $seed_keywords = SOAP::Data->name('seed_keywords' =>
[$seed_keyword]);
my $use_synonyms = SOAP::Data->name('useSynonyms' => 'true');
my $languages = SOAP::Data->name('languages' => ['en']);
my $countries = SOAP::Data->name('countries' => ['US']);

# Get keyword variations.
my $variation_lists = $service->call('getKeywordVariations' =>
$seed_keywords,
$use_synonyms, $languages, $countries, @headers);

print Dumper($variation_lists);

my @data = $variation_lists->valueof("//Body");

foreach my $data_word (@data){
print Dumper($data_word);
}

If anyone knows where I am going wrong I'd be most grateful!

Thanks for your help.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"AdWords API Forum" group.
To post to this group, send email to adwords-api@googlegroups.com
To unsubscribe from this group, send email to 
adwords-api+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/adwords-api?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to