5 messages in com.googlegroups.adwords-apiRe: Exception when validating a Defin...| From | Sent On | Attachments |
|---|---|---|
| filibe | 23 Nov 2007 02:41 | |
| AdWords API Advisor | 26 Nov 2007 12:04 | |
| AdWords API Advisor | 26 Nov 2007 13:33 | |
| filibe | 27 Nov 2007 03:17 | |
| AdWords API Advisor | 27 Nov 2007 08:23 |
| Subject: | Re: Exception when validating a DefinedReportJob in V11![]() |
|---|---|
| From: | filibe (kost...@gmail.com) |
| Date: | 11/27/2007 03:17:20 AM |
| List: | com.googlegroups.adwords-api |
Hello Jeff,
Thank you for your replies. It seems that I found the problem. I was using an old version of soap4r (1.5.6). After I updated soap4r to 1.5.8 the validation of the report job was successful. I could run your sample script as well (with soap4r 1.5.6 the posted code did not work either). This is how the soap request looks like after the soap4r update (just for info):
<?xml version="1.0" encoding="utf-8" ?> <env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Header> <useragent env:mustUnderstand="0">*****</useragent> <developerToken env:mustUnderstand="0">*****</developerToken> <password env:mustUnderstand="0">*****</password> <applicationToken env:mustUnderstand="0">*****</ applicationToken> <email env:mustUnderstand="0">*****</email> <clientEmail env:mustUnderstand="0">*****</clientEmail> </env:Header> <env:Body> <n1:validateReportJob xmlns:n1="https://adwords.google.com/api/ adwords/v11"> <n1:job xsi:type="n1:DefinedReportJob"> <n1:endDay>2007-11-11</n1:endDay> <n1:startDay>2007-11-11</n1:startDay> <n1:aggregationTypes>Daily</n1:aggregationTypes> <n1:selectedColumns>Keyword</n1:selectedColumns> <n1:selectedColumns>KeywordId</n1:selectedColumns> <n1:selectedReportType>Keyword</n1:selectedReportType> </n1:job> </n1:validateReportJob> </env:Body> </env:Envelope>
Regards, Kosta
On Nov 26, 10:34 pm, AdWords API Advisor <adwo...@google.com> wrote:
Hello again Kosta,
Actually, upon further investigation, I'm not able to create the same invalid XML that you are getting while using the adwords4r API. I'm able to successfully validate and schedule v11 reports.
Could you first of all make sure that you are using the latest version of the adwords4r library? It's version 11.0.2, and it's available on RubyForge, so you can just do a "gem install adwords4r" to pick up the latest version.
Assuming that you can reproduce this with the latest version, could you please post the Ruby code that you are using to call the API? There is definitely something wrong with the XML that is being produced, so it's a question of finding out at what point the namespace and xsi:type mangling is taking place.
For your reference, he's the code that I used which worked:
#!/usr/bin/ruby
require 'rubygems' gem 'soap4r' require 'adwords4r'
def main() adwords = AdWords::API.new(AdWords::AdWordsCredentials.new, 11)
job = AdWords::DefinedReportJob.new job.aggregationTypes = 'Daily' job.selectedReportType = 'Keyword' job.startDay = Date.new(2007, 11, 11) job.endDay = Date.new(2007, 11, 11) job.name = 'Ruby v11' job.selectedColumns = ['Keyword', 'KeywordId']
myJobId = adwords.validateReportJob(job)
rescue AdWords::Error::UnknownAPICall => e puts e
rescue AdWords::Error::ApiError => e puts "The following error occurred: %s (code: %s)" % [e.message, e.code] end
if __FILE__ == $0 main() end
Cheers, -Jeff Posnick, AdWords API Team
On Nov 26, 3:04 pm, AdWords API Advisor <adwo...@google.com> wrote:
Hello Kosta,
Apologies that you're running into this issue, and thanks for reporting it.
The issue is related to both the XML namespace for v11 (which isn't getting assigned to the sub-elements of validateReportJob) and to the fact that the xsi:type for the <job> element is incorrect. We will be making the necessary changes to resolve this and will post again when an updated version of the Ruby library is available.
Cheers, -Jeff Posnick
On Nov 23, 5:42 am, filibe <kost...@gmail.com> wrote:
Hello, I am using Ruby and adwords4r to call the validateReportJob in V11 of the googel API. I am getting the following exception:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/ envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Header> <responseTime soapenv:actor="http://schemas.xmlsoap.org/soap/actor/ next" soapenv:mustUnderstand="0" xmlns="https://adwords.google.com/api/ adwords/v11">252</responseTime> <operations soapenv:actor="http://schemas.xmlsoap.org/soap/actor/ next" soapenv:mustUnderstand="0" xmlns="https://adwords.google.com/api/ adwords/v11">0</operations> <units soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xmlns="https://adwords.google.com/api/ adwords/v11">0</units> <requestId soapenv:actor="http://schemas.xmlsoap.org/soap/actor/ next" soapenv:mustUnderstand="0" xmlns="https://adwords.google.com/api/ adwords/v11">eafdd5e13088be6502707ee1c1d6647a</requestId> </soapenv:Header> <soapenv:Body> <soapenv:Fault> <faultcode>soapenv:Server.userException</faultcode>
<faultstring>org.xml.sax.SAXException: Unable to create JavaBean of type com.google.ads.netapi.services.report.ReportJob. Missing default constructor? Error was: java.lang.IllegalAccessException: Class org.apache.axis.encoding.ser.BeanDeserializer can not access a member of class com.google.ads.netapi.services.report.ReportJob with modifiers "protected".</faultstring>
<detail> <ns1:stackTrace xmlns:ns1="http://xml.apache.org/ axis/">org.xml.sax.SAXException: Unable to create JavaBean of type com.google.ads.netapi.services.report.ReportJob. Missing default constructor? Error was: java.lang.IllegalAccessException: Class org.apache.axis.encoding.ser.BeanDeserializer can not access a member of class com.google.ads.netapi.services.report.ReportJob with modifiers "protected". at org.apache.axis.encoding.ser.BeanDeserializer.startElement(BeanDeserializer.java: 124) at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java: 1038) at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java: 159) at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java: 1138) at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:199) at org.apache.axis.message.RPCElement.getParams(RPCElement.java:342) at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java: 146) at com.google.ads.netapi.config.AdWordsApiProvider.processMessage(AdWordsApiProvider.java: 62) at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java: 319) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java: 32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java: 118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:450) at org.apache.axis.server.AxisServer.invoke(AxisServer.java: 285) at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java: 637) at javax.servlet.http.HttpServlet.service(HttpServlet.java: 709) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java: 301) at javax.servlet.http.HttpServlet.service(HttpServlet.java: 802) at com.google.gse.FilteredServlet $ChainEnd.doFilter(FilteredServlet.java:144) at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:46) at com.google.gse.FilteredServlet $Chain.doFilter(FilteredServlet.java:122) at com.google.soap.base.LoggingFilter.doFilter(LoggingFilter.java:142) at com.google.gse.FilteredServlet $Chain.doFilter(FilteredServlet.java:122) at com.google.servlet.balancing.LoadBalancingFilter.doFilter(LoadBalancingFilter.java: 159) at com.google.gse.FilteredServlet $Chain.doFilter(FilteredServlet.java:122) at com.google.gse.FilteredServlet.service(FilteredServlet.java: 94) at com.google.gse.HttpConnection.runServlet(HttpConnection.java:534) at com.google.gse.HttpConnection.run(HttpConnection.java:458) at com.google.gse.DispatchQueue $WorkerThread.run(DispatchQueue.java:299) </ns1:stackTrace>
</detail>
</soapenv:Fault> </soapenv:Body>
This is my request:
<?xml version="1.0" encoding="utf-8" ?> <env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Header> <token env:mustUnderstand="0">****</token> <useragent env:mustUnderstand="0">****</useragent> <password env:mustUnderstand="0">**************</password> <applicationToken env:mustUnderstand="0">*******</ applicationToken> <email env:mustUnderstand="0">****************</email> <clientEmail env:mustUnderstand="0">**************</ clientEmail> </env:Header> <env:Body> <n1:validateReportJob xmlns:n1="https://adwords.google.com/api/ adwords/v11"> <job xsi:type="{https://adwords.google.com/api/adwords/ v11}DefinedReportJob"> <endDay>2007-11-11</endDay> <startDay>2007-11-11</startDay> <aggregationTypes>Daily</aggregationTypes> <selectedColumns>Keyword</selectedColumns> <selectedColumns>KeywordId</selectedColumns> <selectedReportType>Keyword</selectedReportType> </job> </n1:validateReportJob> </env:Body> </env:Envelope>
I saw a couple of posts describing the same problem. The problem there was though that the namespace was not correct. I cannot see anything wrong with my request. Does anyone have an idea what I am doing wrong here? Does anyone have an idea how I can fix this?
Thank you in advance.




