Noob问题。如何使用PHP的SoapClient类来使用有状态的Web服务?
我正在开发一个使用有状态Web服务的PHP Web站点。基本上,我的网站的“控制流程”如下:
- 用户被显示在一页上。
- 用户执行操作。
- 网站的服务器使用用户输入作为参数向Web服务发出请求。
- Web服务的服务器执行该请求,并在过程中从状态A转到状态B.
- 该网站的服务器将用户重定向到另一个页面,我们回到步骤1
我的问题是,该网站无法跟踪Web服务的请求之间的状态。我如何使Web站点跟踪Web服务的状态?我正在使用PHP的标准SoapClient
类。
我试图序列化对象SoapClient
到一个会话变量:
# 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();
?>
但它不工作。我的代码有什么问题?
@MK:非常感谢! – pyon 2011-01-11 22:25:04