客户端PHP调用.NET webservice保留会话信息

时间:2012-03-03 12:47:58

标签: php .net soap connection

我正在建立一个PHP客户端(我已经有一个C#客户端)作为概念证明。 PHP客户端将使用SOAP连接相同的.NET服务器。例如,我正在使用游戏二十一点。

现在首先C#客户端工作正常,但PHP中存在问题。经过大量调试后,我发现PHP总是为每个远程服务器调用使用新连接。这使得无法对游戏进行编程。

例如,我有一个PHP文件,只是像这样设置客户端(client.php):

try {
    $client = @new soapClient("http://localhost:8000/BlackJack/Service?wsdl",
        array(
            "trace" => 1,
            "exceptions" => 0,
            "cache_wsdl" => 0)
        );

} catch (Exception $e) {
    print 'Caught exception: ' . $e->getMessage() . "\n";

}

然后在我的主文件中(不能使用jQuery和ajax调用来动态加载它,但现在我只是测试)我有以下代码(blackJackClient.php):

require_once("client.php");
$ini = ini_set("soap.wsdl_cache_enabled","0");
$BetAmountPost = 100;
    print_r($result = $client->buttonDeal_Click(array("BetAmount" => (string)$BetAmountPost))->buttonDeal_ClickResult);
    print_r($result = $client->PlayerMoney()->PlayerMoneyResult);

第一个电话将开始一个新游戏(交易),玩家的下注金额(例如100)将从总金额中减去(1000)。那么我得到的结果是钱= 900。

下面的突击队员会问我目前有多少钱,一个人希望得到900,但是没有,我有1000(我的起始金额)。

所以我的问题是如何才能使所有的呼叫都在一个会话中进行,所以我们仍然使用相同的连接?

谢谢!

1 个答案:

答案 0 :(得分:1)

由于SOAP使用HTTP协议,并且HTTP是无状态的,因此无法在游戏会话期间保持连接处于打开状态。 相反,您应该将每次请求的用户身份验证发送到服务器。