Hello Benjamin, It would sound like the XML you're sending to the AdWords API isn't being properly serialized. I don't know exactly why that would be, but I'd recommend double-checking to make sure you're using the latest release of SOAP::Lite and the XML modules that it depends on.
If it's not a module version issue, could you try turning on logging of your outgoing SOAP requests by uncommenting this line: #SOAP::Lite->import(+trace => 'debug'); Take a look at what you're sending--do you notice anything odd, specifically related to a http://www.w3.org/1999/XMLSchema namespace attribute? I haven't run into similar issues when running the same sample code in the past. Cheers, -Jeff Posnick, AdWords API Team On Jun 23, 12:54 pm, PerfetoAdmin <[email protected]> wrote: > hello, > > I try to make a report, I try to fix changing the columns, > SelectedReportType, etc, but its not work: > > the error is: > > Report job failed validation due to the following error: The following > SOAP fault occurred: > faultcode: soapenv:Server.userException > faultstring: org.xml.sax.SAXException: No deserializer defined for > array type {http://www.w3.org/1999/XMLSchema}ur-type > > the script its not executed completely, the mensage is in the > validateReportJob. > > I only need (now) get 3 columns, this columns are (Campaign Campaingid > CampaignStatus), the 'selectedReportType' => 'Campaign' and > 'aggregationTypes' => ['Daily']. > > this is my code (a copy of the example in google AdWord): > > use strict; > use warnings; > use English '-no_match_vars'; > use SOAP::Lite; > use LWP::Simple qw(); > use IO::Uncompress::Gunzip qw(); > > binmode(STDOUT, ':utf8'); > > my $email = '[email protected]'; > my $password = 'XXXXXXXXXX'; > my $client_email = '[email protected]'; > my $useragent = 'Perl Sample Code'; > my $developer_token = 'XXXXXXXXX++QWE'; > my $application_token = ''; > > my $url = sprintf('https://%s.google.com/api/adwords/v13/ > ReportService', > '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), > ); > > my $report_job = SOAP::Data->name('job' => > {'selectedReportType' => 'Campaign', > 'name' => 'Sample Keyword Report', > 'aggregationTypes' => ['Daily'], > 'selectedColumns' => [qw(Campaign Campaingid CampaignStatus > )] > }); > > $report_job->attr({'xsi:type' => 'DefinedReportJob', > 'xmlns' => 'https://adwords.google.com/api/adwords/ > v13'}); > > eval { > # Validate report. > $service->call('validateReportJob' => $report_job, @headers); > > # Schedule report. > my $job_id = $service->call('scheduleReportJob' => $report_job, > @headers) > ->result(); > $job_id = SOAP::Data->name('reportJobId' => $job_id); > > # Wait for report to finish. > my $status = $service->call('getReportJobStatus' => $job_id, > @headers) > ->result(); > while ($status ne 'Completed' and $status ne 'Failed') { > printf("Report job status is '%s'.\n", $status); > sleep(30); > $status = $service->call('getReportJobStatus' => $job_id, > @headers) > ->result(); > } > > if ($status eq 'Failed') { > die("Report job generation failed.\n"); > } > > # Download report. > my $report_url = $service->call('getGzipReportDownloadUrl' => > $job_id, > @headers)->result(); > printf("Report is available at '%s'.\n", $report_url); > > # Write report to local file. > my $gzip_report_data = LWP::Simple::get($report_url); > my $file = 'keyword_report.xml'; > IO::Uncompress::Gunzip::gunzip(\$gzip_report_data => $file); > printf("Report has been written to '%s'.\n", $file); > > }; > > if ($@) { > print("Report job failed validation due to the following error: ", > $@, "\n"); > > } > > thanks for your help. > > Regards, > Benjamin --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
