Norb, Sorry not had a chance to reply before, Just using a modified version of the quote example in the samples directory that comes with Gsoap, I have used a stuct to return , so you can see how they fit in if you need to pass complex structures around. Let me know if you have any problems. This is the c++ header file. <snip> typedef char * xsd__string; int ns__sendback (char * password, struct ns__sendbackResponse {xsd__string _return_;} * out); </snip> This is the c++ code. <Snip> #include "soapH.h" /* include generated proxy and SOAP support */ int main(int argc, char **argv) { struct soap soap; struct ns__sendbackResponse q; char *sym; if (argc > 1) sym = argv[1]; else { fprintf(stderr, "Usage: quote <ticker>\n"); exit(1); } soap_init(&soap); if (soap_call_ns__sendback(&soap, "http://redfairy/soap/testserver.php", "",sym , &q) == 0) printf("Input was %s soap call returned - %s\n", sym, q._return_); else soap_print_fault(&soap, stderr); soap_end(&soap); soap_done(&soap); return 0; } /* The namespace mapping table is required and associates namespace prefixes with namespace names: */ struct Namespace namespaces[] = { {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/"}, /* MUST be first */ {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/"}, /* MUST be second */ {"xsi", "http://www.w3.org/1999/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance"}, /* MUST be third */ {"xsd", "http://www.w3.org/1999/XMLSchema", "http://www.w3.org/*/XMLSchema"}, {"ns", "urn:test_Server"}, /* Method namespace URI */ {NULL, NULL} }; </snip> and the php server <snip> <?php // first, include the SOAP/Server class require_once 'SOAP/Server.php'; class Test1 { // Stores instance of PEAR::SOAP Server var $soapServer; // Constructor builds PEAR::SOAP Server function Test1 () { // Switch off notices to all GET error_reporting(E_ALL ^ E_NOTICE); // Instantiate PEAR::SOAP SOAP_Server $this->soapServer=new SOAP_Server; // Build the object map (using this instance) + add a namespace $this->soapServer->addObjectMap($this,'urn:test_Server'); // Turn on the server $this->soapServer->service($GLOBALS['HTTP_RAW_POST_DATA']); } function serverTimestamp() { return time(); } function sendback($name) { return 'Hello '.$name; } } // Start the SOAP server $test = new Test1; ?> </snip> Have fun O. -----Original Message----- From: PHPDiscuss - PHP Newsgroups and mailing lists [mailto:nblam@austin.rr.com] Sent: 04 May 2004 19:12 To: soap@lists.php.net Subject: Re: GsoaP/PEAR::SOAP interoperability Thanks O for answering my posting. That would be great if you could send me a example (like 'hello' below) of a GSOAP client making a request to a PEAR::SOAP server. Also, if you have an example of structures or lists that are being passed as a SOAP response. I have a MySQL database that is being queried by my backend PHP code and am wondering how to pass multiple types via SOAP. Thanks again, Norb Here's the corresponding C code which is currently failing: C Code: #include "soapH.h" #include "ns.nsmap" const char server[] = "http://192.168.2.102/test/pear_soap/examples/ws/testserver1.php"; int main(int argc, char **argv) { struct soap soap; char result[50]; char *pass_variable; pass_variable = result; soap_init(&soap); soap_call_ns4__hello(soap_new(), server, "", "bonnie girl", &pass_variable); if (soap.error) soap_print_fault(&soap,stderr); else { printf("successful"); printf("result: %s", pass_variable); } return 0; } Here's the corresponding PHP server side code: <?php class Test1 { // Stores instance of PEAR::SOAP Server var $soapServer; // Constructor builds PEAR::SOAP Server function Test1 () { // Switch off notices to all GET error_reporting(E_ALL ^ E_NOTICE); // Instantiate PEAR::SOAP SOAP_Server $this->soapServer=new SOAP_Server; // Build the object map (using this instance) + add a namespace $this->soapServer->addObjectMap($this,'http://www.phppatterns.com#Test1'); //$this->soapServer->addObjectMap($this,'http://tempuri.org'); // Turn on the server $this->soapServer->service($GLOBALS['HTTP_RAW_POST_DATA']); } function serverTimestamp() { return time(); } function hello($name) { return 'Hello '.$name; } function hello1() { return 'Hello from PEAR'; } } ?> Owain Perry wrote: > Norb, > I can confirm that I have got GSOAP 2.4 & 2.5 working fine with PEAR::Soap, > but I have only been passing strings around and not really tested any other > data types. Apart from Attachments which don't seem to work that well as > PEAR::SOAP doesn't build the options array that gsoap expects, but this can > be worked around. let me know if you need some code. > O. > -----Original Message----- > From: PHPDiscuss - PHP Newsgroups and mailing lists > [mailto:nblam@austin.rr.com] > Sent: 27 April 2004 03:00 > To: soap@lists.php.net > Subject: GsoaP/PEAR::SOAP interoperability > I've been trying to get my C++ gsoap client request to work with my PHP > PEAR::SOAP server response. > Has anyone ever tried this and get it to work? Here are the details: > GSOAP request: > <?xml version="1.0" encoding="UTF-8"?> > <SOAP-ENV:Envelope > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns:ns4="http://www.phppatterns.com#Test1"> > <SOAP-ENV:Body id="_0"> > <hello xmlns="http://www.phppatterns.com#Test1"> > <param-1>bonnie girl</param-1> > </hello> > </SOAP-ENV:Body> > </SOAP-ENV:Envelope> > PEAR::SOAP response: > HTTP/1.1 200 OK > Date: Tue, 27 Apr 2004 01:50:52 GMT > Server: Apache/1.3.27 (Unix) PHP/4.3.1 DAV/1.0.3 mod_ssl/2.8.14 > OpenSSL/0.9.6b > X-Powered-By: PHP/4.3.1 > Status: 200 OK > Content-Length: 561 > Connection: close > Content-Type: text/xml; charset=UTF-8 > <?xml version="1.0" encoding="UTF-8"?> > <SOAP-ENV:Envelope > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" > xmlns:ns4="http://www.phppatterns.com#Test1" > SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> > <SOAP-ENV:Body> > <ns4:helloResponse> > <return xsi:type="xsd:string">Hello bonnie > girl</return></ns4:helloResponse> > </SOAP-ENV:Body> > </SOAP-ENV:Envelope> > Everything looks good except GSOAP doesn't like the <return> tag > according to the following debug message: > Unknown element 'return' (level=3, 1) > IGNORING element 'return' > End element found (level=3) 'return'='' > A more generic question: > Has anyone ever gotten a C++ SOAP client (any SOAP implementation) to > correct communicate with a PHP SOAP Server (Any SOAP implementation) > Thanks in Advance > Norb > -- > PHP Soap Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Soap Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Soap Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php