RE: [SOAP] SOAP newbie looking for help
| From: | Viner, David | Date: | Fri, 27 Feb 2004 21:45:11 +0000 |
| Subject: | RE: [SOAP] SOAP newbie looking for help | ||
| Groups: | php.soap | ||
| Request: | Send a blank email to php-soap+get-1393@lists.php.net to get a copy of this message | ||
you might also take a look at
http://www.phppatterns.com/index.php/article/articleview/41/1/2
dave
-----Original Message-----
From: cristopher pierson ewing [mailto:cewing@u.washington.edu]
Sent: Friday, February 27, 2004 1:28 PM
To: Bill Moran
Cc: soap@lists.php.net
Subject: Re: [SOAP] SOAP newbie looking for help
Hi bill,
Thanks for the input. This prootocol reminds me a bit of OSC, which I've
used before for passing control data for audio applications over networks.
I've found a 'basic' tutorial online that gets one started writing a
'hello world' kind of program with a SOAP server and client, but the
tutorial has problems, the code seems to malfunction. I'm going to paste
in the files as I found them online, perhaps someone can help me to figure
out what is going wrong.
by the way, the tutorial I'm referring to is at the following URL:
http://evolt.org/article/The_PEAR_SOAP_Implementation/21/49993/index.html
The tutorial says that if I call the client file from my browser, I should
get 'hello world' to show up. This doesn't happen. I get some strange
error messages instead, especially after adding the error tracking code
that you suggested (Thanks for that, by the way!).
Here's the errors I get, printed as requested from the client file below:
(apologies for the crappy linebreaks and tabbing)
Printed return from client file:
**********************
Object
message: method '{urn:helloworld}helloWorld' not defined in service
user info: Array
get wire
Here's some user info
stdClass Object ( [file] => /usr/local/php/lib/php/SOAP/Fault.php
[line] => 49 [function] => pear_error [class] => pear_error
[type] => :: [args] => Array ( [0] => method
'{urn:helloworld}helloWorld' not defined in service [1] =>
Server [2] => [3] => [4] =>
) )
Here's some user info
stdClass Object ( [file] => /usr/local/php/lib/php/SOAP/Base.php
[line] => 199 [function] => soap_fault [class] => soap_fault
[type] => -> [args] => Array ( [0] => method
'{urn:helloworld}helloWorld' not defined in service [1] =>
Server [2] => [3] => [4] =>
[5] => ) )
Here's some user info
stdClass Object ( [file] => /usr/local/php/lib/php/SOAP/Server.php
[line] => 377 [function] => _raisesoapfault [class] => soap_server
[type] => -> [args] => Array ( [0] => method
'{urn:helloworld}helloWorld' not defined in service [1] =>
[2] => [3] => Server ) )
Here's some user info
stdClass Object ( [file] => /usr/local/php/lib/php/SOAP/Server.php
[line] => 168 [function] => parserequest [class] => soap_server
[type] => -> [args] => Array ( [0] => World
[1] => ) )
Here's some user info
stdClass Object ( [file] =>
/Users/cewing/phpstuff/CMEtests/SOAP/tests/pearsoap-hello-server.php
[line] => 33 [function] => service [class] => soap_server
[type] => -> [args] => Array ( [0] => World
) )
**********************
Client file:
**********************
<?php
require_once("SOAP/Client.php");
$client = new
SOAP_Client('http://trurl.dom.washington.edu/testsite/SOAP/tests/pearsoap-he
llo-server.php');
$params = array('inmessage'=>'World');
$options = array('trace'=>'true','timeout'=>5);
$response =
$client->call('helloWorld',$params,array('namespace'=>'urn:helloworld'),$opt
ions);
print $response.'<br>';
//Stuff added after this point comes from Bill Moran, Thanks!!!!
if (PEAR::isError($response)) {
echo 'message: '.$response->getMessage().'<br>';
echo 'user info: '.$response->getUserInfo().'<br>';
echo 'get wire'.$client->__get_wire().'<br>';
}
foreach ($response->getUserInfo() as $k=>$v) {
echo "Here's some user info<br>";
print_r($v);
echo '<p>';
}
?>
**********************
Server File:
**********************
<?php
require_once('SOAP/Server.php');
class SOAP_Hello_Server {
var $dispatch_map = array();
function SOAP_Hello_Server() {
$this->dispatch_map['helloWorld'] =
array('in'=>array('inmessage'=>'string'),
'out'=>array('outmessage'=>'string'));
}
function helloWorld ($inmessage) {
if ($inmessage == '') {
$fault = new SOAP_Fault('You must provide a valid
string!','12345');
return $fault->message();
} else {
return "Hello $inmessage!";
}
}
}
$server = new SOAP_Server();
$soaphelloserver = new SOAP_Hello_Server();
$server->addObjectMap($soaphelloserver,array('namespace'=>'urn:helloworld'))
;
$server->service($HTTP_RAW_POST_DATA);
exit;
?>
**********************
********************************
Cris Ewing
CME and Telehealth Web Services
University of Washington
School of Medicine
Work Phone: (206) 685-9116
Home Phone: (206) 365-3413
E-mail: cewing@u.washington.edu
*******************************
On Fri, 27 Feb 2004, Bill Moran wrote:
> cristopher pierson ewing wrote:
> > Hello,
> >
> > I'm building a website to provide online Continuing Medical Education
> > content to Physicians and Helath Care workers.
> >
> > Much of the material for my online courses is being stored in a system
> > called the DigitalWell, created by the University of Washington. They
> > have provided me with a list of SOAP commands for their front-end API,
but
> > I am new to soap and need some help getting started.
> >
> > I have installed the SOAP package (0.83RC3) from the PEAR site and
> > installed it using the pear cli installer. I can't seem to find any
> > manual or documentation included in the downloaded files, though, and
> > there seems to be no documentation online at PEARs website.
> >
> > I've also tried the FAQ for this list, but find that there are no
> > frequently asked questions yet.
> >
> > Any suggestions of places to look for information on using PEAR::SOAP?
>
> The usage of the soap package is actually so simple that it requires
> almost no documentation! Of course, you need enough to get you started...
>
> The basic procedure is this:
> $soapobj = new SOAP_Client('http://<URL OF SOAP
> SERVER>');
> $soapoptions = array('trace' => true, 'timeout' => 5);
> $result = $soapobj->call('<methodname>', $param = array('var1'
> => $value,
'var2' => $value), $options);
> if (PEAR::isError($result)) {
> echo $result->getMessage();
> echo $result->getUserInfo();
> echo $soapobj->__get_wire();
> }
>
> The options are (by definition) optional. Setting trace to
> true seems to slow things down a bit, but gives much nicer
> error information when things go wrong (when it's false,
> ->__get_wire() always returns an empty string) The <methodname>
> and the contents of the $param array will be defined by the stuff
> you got from DigitalWell, as will the format of $result. If the
> DigitalWell docs are ambiguous, print_r($result) will probably
> help a LOT!
>
> I'm only typing all this out because I don't remember where I
> found the documentation that I used to get started :( and I've
> been unable to find it again!
>
> --
> Bill Moran
> Potential Technologies
> http://www.potentialtech.com
>
> --
> 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