Noob Frage.Wie konsumieren Sie einen statusbehafteten Web-Service mit der SoapClient-Klasse von PHP?
Ich entwickle eine PHP-Website, die einen Stateful Web Service verbraucht. Grundsätzlich ist der "Ablauf der Kontrolle" meiner Website der folgende:
- Der Benutzer wird eine Seite angezeigt.
- Der Benutzer führt eine Aktion aus.
- Der Server der Website führt eine Anfrage an den Web-Service durch, wobei Benutzereingaben als Parameter verwendet werden.
- Der Server des Web-Service führt die Anforderung aus und wechselt dabei von Status A zu Status B.
- Der Server der Website leitet den Benutzer auf eine andere Seite, und wir gehen zurück 1.
Mein Problem, dass verliert die Website den Überblick über die zwischen den Anforderungen staatlichen Web-Service ist zu treten. Wie kann ich sicherstellen, dass die Website den Status des Web-Service nachverfolgt? Ich verwende PHP-Standard SoapClient
Klasse.
Ich habe versucht, das SoapClient
Objekt in eine Session-Variable Serialisierung:
# ws_client.php
<?php
function get_client()
{
if (!isset($_SESSION['client']))
$_SESSION['client'] = new SoapClient('http://mydomain/MyWS/MyWS.asmx?WSDL', 'r');
return $_SESSION['client'];
}
function some_request($input1, $input2)
{
$client = get_client();
$params = new stdClass();
$params['input1'] = $input1;
$params['input2'] = $input2;
return $client->SomeRequest($params)->SomeRequestResult;
}
function stateful_request($input)
{
$client = get_client();
$params = new stdClass();
$params['input'] = $input;
return $client->StatefulRequest($params)->StatefulRequestResult;
}
?>
# page1.php
<?php
session_start();
$_SESSION['A'] = some_request($_POST['input1'], $_POST['input2']);
session_write_close();
header('Location: page2.php');
?>
# page2.php
<?php
session_start();
echo $_SESSION['A']; // works correctly
echo stateful_request($_SESSION['A']); // fails
session_write_close();
?>
Aber es funktioniert nicht. Was ist falsch an meinem Code?
@MK: Vielen Dank! – pyon