Re: Re: Instructions for SOAP ws

From: Date: Fri, 30 May 2003 15:11:28 +0000
Subject: Re: Re: Instructions for SOAP ws
References: 1 2 3  Groups: php.pear.dev 
Request: Send a blank email to pear-dev+get-16838@lists.php.net to get a copy of this message
No problem - hadn't played with it before but here's a simple example that worked for me. hello_server.php; <?php require_once 'SOAP/Server.php'; // Your class class HelloServer { var $__dispatch_map = array(); function HelloServer() {
       // Define the signature of the dispatch map
       $this->__dispatch_map['sayHello'] =
           array('in' => array('inputString' => 'string'),
                 'out' => array('outputString' => 'string'),
                 );
} // Required function by SOAP_Server function __dispatch($methodname) {
       if (isset($this->__dispatch_map[$methodname]))
           return $this->__dispatch_map[$methodname];
       return NULL;
} // Your function function sayHello($inputString) {
       return 'Hello '.$inputString;
} } // Fire up PEAR::SOAP_Server $server = new SOAP_Server; // Fire up your class $helloServer = new HelloServer(); // Add your object to SOAP server (note namespace) $server->addObjectMap($helloServer,'urn:HelloServer'); // Handle SOAP requests coming is as POST data if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']=='POST') { $server->service($HTTP_RAW_POST_DATA); } else { // Deal with WSDL / Disco here require_once 'SOAP/Disco.php'; // Create the Disco server $disco = new SOAP_DISCO_Server($server,'HelloServer'); header("Content-type: text/xml"); if (isset($_SERVER['QUERY_STRING']) &&
       strcasecmp($_SERVER['QUERY_STRING'],'wsdl')==0) {
       echo $disco->getWSDL(); // if we're talking http://www.example.com/index.php?wsdl
} else {
       echo $disco->getDISCO();
} exit; } ?> The main thing is getting the dispatch map right. You probably will need to examine Shane's examples if you're planning to pass structs around - for simple examples like this believe Shane's leaving it to PHP's reflection to get right. The client for this server; hello_client.php <?php require_once 'SOAP/Client.php'; $wsdl = new SOAP_WSDL ('http://localhost/wsdl/hello_server.php?wsdl'); $helloClient = $wsdl->getProxy(); echo ( $helloClient->sayHello('Luis') ); ?> Hope that helps. BTW - might be worth consider Cache_Lite on the client side - Cache_Lite_Function would help store the results locally when needed and reduce network crossings. Don't know if you've seen these - may be some more help - I didn't discuss WSDL on the server side but perhaps some useful info there... http://www.phppatterns.com/index.php/article/articleview/39/1/2/ (Client) http://www.phppatterns.com/index.php/article/articleview/41/1/2/ (Server) http://www.phppatterns.com/index.php/article/articleview/40/1/2/ (Extending the SOAP_WSDL class) On Fri, 30 May 2003 09:28:35 -0300, Luis Argerich <luis@fuegolabs.com> wrote:
Well, I'm an idiot, I can't get it to work, I just need the code for a server implementing a echo_string($msg) method and generating a WSDL that can be reached from other apps, how is the WSDL accessed? server.php?wsdl as in axis? If you or someone know an example of a client/server SOAP ws were the server also generates it's own WSDL I'd appreciate it. If not I'll just wait until someone builds a framework to make this usable without hours of investigation :-) Tks. ----- Original Message ----- From: "Harry Fuecks" <hfuecks@phppatterns.com> To: <pear-dev@lists.php.net> Sent: Thursday, May 29, 2003 10:09 PM Subject: [PEAR-DEV] Re: Instructions for SOAP ws
Hi Luis, Looks your the client is right. Not sure if you've seen these slides; http://talks.php.net/show/soap-phpcon-ny2003/69 http://talks.php.net/show/soap-phpcon-ny2003/70 The SOAP_Disco class is only available with the latest - PEAR::SOAP 0.73 - Shane provides some examples in there - examples/wsdl_client.php talks the server he demonstrates in the slides. There's a another example of WSDL generation on the server side in examples/disco_server.php Hope that helps. On Thu, 29 May 2003 10:03:14 -0300, Luis Argerich <luis@fuegolabs.com> wrote:
Hi, I want to implement a WSDL based webservice server & client using PHP. I've tried using slides from several PHP talks from Shane but examples
don't
work. Can you point me to a quick working example of a WSDL based client & server pls? (WSDL is needed since the WS will be accessed from other non-php
clients
that use the WSDL to access the service) Example client: include("SOAP/Client.php"); $wsdl_url = 'http://localhost/Foo.wsdl'; $WSDL =& new SOAP_WSDL($wsdl_url); $soapclient =& $WSDL->getProxy(); echo $soapclient->echo_string('hey'); I just need instructions on how to build the server for this client. Thanks in advance.
-- PEAR Development Mailing List (http://pear.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php


« previous php.pear.dev (#16838) next »