Hi Samisa
I got the service to work (partially)with google by changing the generated stubs to the same order as that in the Google wsdl.
The Google Service is sending me a SOAP response which I can see when i run tcpdump but somehow while parsing the XML it errors out with a segmentation fault.
Cheers Krishna uic.edu/~krajag2
Hi Krishna,
Is it possible for you to capture the SOAP message sent by client as well as that sent by the server?
Samisa...
On Fri, 25 Feb 2005 22:11:18 -0600, krishna <[EMAIL PROTECTED]> wrote:
Hi
I am trying to develop a Simple Client for Google Search Service using AXIS.I have downloaded the Google API and registered with Google.I ran the following simple program given below but it seems to error out.
Tried using the example in the Google API and it works fine!! which implies that i am doing something wrong.Cant figure out what.
#include <iostream> #include "GoogleSearchPort.hpp"
using namespace std;
int main() { try{ GoogleSearchResult *GSR1; //to store Google Search Result GoogleSearchPort GSP1; //Google Search Port GSR1=GSP1.doGoogleSearch((axiscpp::xsd__boolean)true, <my API key>, "no", 1, "utf", (axiscpp::xsd__boolean)false, "blank", 10, "blank", "UIC");
}catch(GoogleSearchService_AxisClientException e) { cout<<"\n This is an Exceptioncode :"<<e.getExceptionCode(); cout<<"\n This is the Exception :"<<e.getMessage(e.getExceptionCode()); cout<<"\n e.what()"<<e.what(); }
}
I do understand that the order of the parameters is not as per the google wsdl but it is done this way because the axis client has generated it in the order above.It will not affect as the names of the parameters are being sent too as it goes as XML.
The client code which calls the doGoogleSearch function is given below(generated using WSDL2ws tool in AXIS)
GoogleSearchResult* GoogleSearchPort::doGoogleSearch(xsd__boolean Value0, xsd__string Value1, xsd__string Value2, xsd__int Value3, xsd__string Value4, xsd__boolean Value5, xsd__string Value6, xsd__int Value7, xsd__string Value8, xsd__string Value9) { GoogleSearchResult* pReturn = NULL; const char* pcCmplxFaultName; try { if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL)) return pReturn; m_pCall->setTransportProperty(SOAPACTION_HEADER , "urn:GoogleSearchAction"); m_pCall->setSOAPVersion(SOAP_VER_1_1); m_pCall->setOperation("doGoogleSearch", "urn:GoogleSearch"); applyUserPreferences(); m_pCall->addParameter((void*)&Value0, "filter", XSD_BOOLEAN); m_pCall->addParameter((void*)&Value1, "key", XSD_STRING); m_pCall->addParameter((void*)&Value2, "restrict", XSD_STRING); m_pCall->addParameter((void*)&Value3, "start", XSD_INT); m_pCall->addParameter((void*)&Value4, "ie", XSD_STRING); m_pCall->addParameter((void*)&Value5, "safeSearch", XSD_BOOLEAN); m_pCall->addParameter((void*)&Value6, "lr", XSD_STRING); m_pCall->addParameter((void*)&Value7, "maxResults", XSD_INT); m_pCall->addParameter((void*)&Value8, "oe", XSD_STRING); m_pCall->addParameter((void*)&Value9, "q", XSD_STRING); if (AXIS_SUCCESS == m_pCall->invoke()) {
The output of the current piece of code is as follows
This is an Exceptioncode :66 This is the Exception :The GoogleSearchService service has thrown an exception. see details e.what()
-- Krishna www.uic.edu/~krajag2
