SOAP Error

H

Harish

I am trying to write a perl program that gets keywords from a URL using
the Google API. And I seem to be getting a SOAP reply with an error
that I am unable to figure... Can someone please help out??

Sorry if this is not the exact place to post this but I havnt managed
to get help anywhere else...

The program
#!/usr/bin/perl -w
use SOAP::Lite;

$url =
"http://adwords.google.com/api/adwords/v4/KeywordToolService?WSDL";
$email = "<EmailID>";
$password = "<PASSWORD>";

$useragent = "<ID>";

$token = "<ID>";

my $namespace = "https://adwords.google.com/api/adwords/v4 ";


my $service = SOAP::Lite->service($url);


$service->on_debug( sub { print @_ } );


$service->autotype(0);


$service->on_fault(\&faulthandler);


my @headers =

(SOAP::Header->name("email")->value($email)->uri($namespace)->prefix("impl"),

SOAP::Header->name("password")->value($password)->uri($namespace)->prefix("impl"),

SOAP::Header->name("useragent")->value($useragent)->uri($namespace)->prefix("impl"),

SOAP::Header->name("token")->value($token)->uri($namespace)->prefix("impl"));




my $req = {
"url" => "https://www.cmi.ac.in ",
"languages" => ['en'],
"countries" => ['IN'],
};

# "includeLinkedPages" => True,
# Call the service method.

my $site_words = $service->getKeywordsFromSite($req, @headers);


sub faulthandler {
my ($soap, $res) = @_;
die("SOAP Fault: " . $res->faultstring . " for input \"" .
$res->faultdetail->{"trigger"} .
"\" (Error Code " . $res->faultdetail->{"code"} . ")");
}


When I call different services with this part changed it works...


my $req = {
"url" => "https://www.cmi.ac.in",
"languages" => ['en'],
"countries" => ['IN'],
};






The Error I am getting:


________________________________

HTTP/1.1 500 Internal Server Error
Cache-Control: private
Connection: Close
Date: Fri, 02 Jun 2006 10:06:34 GMT
Server: GFE/1.3
Content-Type: text/xml; charset=utf-8
Client-Date: Sat, 03 Jun 2006 04:47:15 GMT
Client-Peer: 64.233.161.112:443
Client-Response-Num: 1
Client-SSL-Cert-Issuer: /C=US/O=Equifax/OU=Equifax Secure Certificate
Authority
Client-SSL-Cert-Subject: /C=US/ST=California/L=Mountain View/O=Google
Inc./CN=adwords.google.com
Client-SSL-Cipher: AES256-SHA
Client-SSL-Warning: Peer certificate not verified
Client-Transfer-Encoding: chunked

<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="
http://www.w3.org/2001/XMLSchema"
xm\lns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<requestId soapenv:actor="
http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0"
xmlns="https://adwords.g\oogle.com/api/adwords/v4
">d7b452a29db039eb6079026e0eb13aac</requestId>
</soapenv:Header>
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>


<faultstring>org.xml.sax.SAXException: SimpleDeserializer
encountered a child element, which is NOT expected, in somet\hing it
was trying to deserialize.</faultstring>


<detail>
<ns1:stackTrace
xmlns:ns1="http://xml.apache.org/axis/">org.xml.sax.SAXException:
SimpleDeserializer encountered a ch\ild element, which is NOT expected,
in something it was trying to deserialize.
at
org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDeserializer.java:149)
at
org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1025)
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.AdWordsApiProvider.processMessage
(AdWordsApiProvider.java:42)
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.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:124)
at
com.google.ads.netapi.balancing.AdsNetAPILoadBalancingFilter.processRequestLocally(AdsNetAPILoadBalancingFilter.\java:506)
at
com.google.ads.netapi.balancing.AdsNetAPILoadBalancingFilter.loadBalanceRequest(AdsNetAPILoadBalancingFilter.jav\a:244)
at
com.google.ads.netapi.balancing.AdsNetAPILoadBalancingFilter.doFilter(AdsNetAPILoadBalancingFilter.java
:182)
at
com.google.gse.FilteredServlet$Chain.doFilter(FilteredServlet.java:102)
at
com.google.gse.FilteredServlet.service(FilteredServlet.java:82)
at com.google.gse.HttpConnection.runServlet
(HttpConnection.java:440)
at com.google.gse.HttpConnection.run(HttpConnection.java:371)
at
com.google.gse.DispatchQueue$WorkerThread.run(DispatchQueue.java:256)
</ns1:stackTrace>


</detail>


</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
 
J

John Bokma

Harish said:
The Error I am getting:

HTTP/1.1 500 Internal Server Error


Means: Google is returning the error, not your script.
<faultstring>org.xml.sax.SAXException: SimpleDeserializer
encountered a child element, which is NOT expected, in somet\hing it
was trying to deserialize.</faultstring>

So something went wrong on Google's side, which could be caused by your
program sending bad data. Thanks to the very clear fault string this is
very hard to figure out.

I recommend to contact Google and/or check out the Google API related
groups.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,020
Latest member
GenesisGai

Latest Threads

Top