downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

SoapServer::setClass> <SoapServer::getFunctions
Last updated: Fri, 14 Aug 2009

view this page in

SoapServer::handle

(PHP 5 >= 5.0.1)

SoapServer::handleTraite une requête SOAP

Description

public void SoapServer::handle ([ string $soap_request ] )

Effectue une requête SOAP, appelle les fonctions nécessaires et envoie une réponse en retour.

Liste de paramètres

soap_request

La requête SOAP. Si cet argument est omis, la requête est supposée être dans les données POST brûtes de la requête HTTP.

Valeurs de retour

Aucune valeur n'est retournée.

Exemples

Exemple #1 Exemple avec SoapServer::handle()

<?php
function test($x)
{
    return 
$x;
}

$server = new SoapServer(null, array('uri' => "http://test-uri/"));
$server->addFunction("test");
$server->handle();
?>

Voir aussi



SoapServer::setClass> <SoapServer::getFunctions
Last updated: Fri, 14 Aug 2009
 
add a note add a note User Contributed Notes
SoapServer::handle
Artur Graniszewski
15-Nov-2009 06:19
Be aware that SoapServer::handle(); method sends additional HTTP headers to the browser. One of them is "Content-Type: application/soap+xml". If you want to execute SOAP methods locally as a part of SoapClient::__doRequest() (see example at http://pl2.php.net/manual/en/soapclient.dorequest.php ) you may need to reset (override) this header back to "Content-Type: text/html" like so:

<?php
function Add($x,$y) {
  return
$x+$y;
}

class
LocalSoapClient extends SoapClient {

  function
__construct($wsdl, $options) {
   
parent::__construct($wsdl, $options);
   
$this->server = new SoapServer($wsdl, $options);
   
$this->server->addFunction('Add');
  }

  function
__doRequest($request, $location, $action, $version) {
   
ob_start();
   
$this->server->handle($request);
   
$response = ob_get_contents();
   
ob_end_clean();
    return
$response;
  }

}

$x = new LocalSoapClient(NULL,array('location'=>'test://',
                                  
'uri'=>'http://testuri.org'));

header("Content-Type: text/html");

var_dump($x->Add(3,4));

?>
tom at backslashinteractive dot com
03-Oct-2008 05:54
In response to Blizzke:

Sometimes this problem can be hidden by an Apache segmentation fault along with an HTTP headers error SoapFault thrown to the client.

If you get either of those 2, try checking to make sure that style="rpc" in your WSDL file's soap:operation's.

-T
Blizzke at gmail dot com
12-Mar-2008 12:39
Seems pretty logical once you find the solution, but it took me quite a while to figure this one out:
If you are using WSDL based SOAP requests and you have more than one operation in your binding (with the same parameters), make sure the <soap:operation> style is set to rpc, NOT body!

When you specify 'body' here, all that will be transmitted in the request is the parameters for the function call, and SoapServer->handle() will use the first function it finds with the same parameter-makeup to handle the call.

ie If you have 2 functions:
<?php
function One ( string $blah );
function
Two ( string $blah );
?>
Making a client call with SoapClient -> Two ( 'test' ); will result in One ( ) being called when your 'type' is set to 'body'

The actual method to call will only be included in the request when your type is set to 'rpc', resulting in the expected behavior
king dot maxemilian at noos dot fr
21-Aug-2007 04:23
Sometime, it happens that PHP does not detect anything in $HTTP_RAW_POST_DATA.

To solve this problem and make it work in any case:

function soaputils_autoFindSoapRequest()    {
    global $HTTP_RAW_POST_DATA;
   
    if($HTTP_RAW_POST_DATA)
        return $HTTP_RAW_POST_DATA;
   
    $f = file("php://input");
    return implode(" ", $f);
}

$server = new SoapServer($wsdl);
$server->setClass($MyClass);

$server->handle(soaputils_autoFindSoapRequest());

SoapServer::setClass> <SoapServer::getFunctions
Last updated: Fri, 14 Aug 2009
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites