未设置Php Soap头

未设置Php Soap头,php,web-services,soap,header,Php,Web Services,Soap,Header,我无法让我的php在SOAP头中设置值 我的代码是 $requestParams = 'Parameters I am passing into the WS' $client = new SoapClient('https://webservice.wsdl',array( 'login' => "user", 'password' => "password", 'trace' =&g

我无法让我的php在SOAP头中设置值

我的代码是

$requestParams = 'Parameters I am passing into the WS'

$client = new SoapClient('https://webservice.wsdl',array(
                'login' => "user",
                'password' => "password",
                'trace' => 1,
                'sessionID' => "93b23bb6e611db8548f2ee9485bc7d17"));

$client->submitRequest($requestParams);
进程返回了代码,它确实返回了我期望的结果

然后

哪个应该释放这个sessionID

我调用的Web服务使用sessionID变量,如果未传递该变量,它将为您创建一个,但您只能创建5个唯一会话,然后它会将您锁定5分钟

如果您打开一个会话,您可以重用它,只要您释放一个会话,并且打开的会话不超过五个

我的问题是一切正常,但web服务看不到我的sessionID变量,因为每次我调用它时,它都会向我发出一个新的sessionID。所以它创建了5个新的sessionID,我无法在完成后释放它们,我必须等到它们在服务器上超时

Web服务调用#1字符串(414)“HTTP/1.1200确定日期:8月1日星期五 2014 20:56:32 GMT服务器:Apache集Cookie: PHPSESSID=ee6d8e3f9e6e1b9dac35e10f917a69c8;路径=/Expires:Thu,19 1981年11月08:52:00 GMT缓存控制:无存储,无缓存, 必须重新验证,后检查=0,预检查=0 Pragma:无缓存 设置Cookie:PHPSESSID=ee6d8e3f9e6e1b9dac35e10f917a69c8;路径=/ 内容长度:560连接:关闭内容类型:text/xml; 字符集=utf-8“

Web服务调用#2字符串(414)“HTTP/1.1200确定日期:8月1日星期五 2014 20:57:18 GMT服务器:Apache集Cookie: PHPSESSID=46D99F3B92D095981119B705068697C;路径=/Expires:Thu,19 1981年11月08:52:00 GMT缓存控制:无存储,无缓存, 必须重新验证,后检查=0,预检查=0 Pragma:无缓存 设置Cookie:PHPSESSID=46d99f3b92d095981119b7050686967c;路径=/ 内容长度:560连接:关闭内容类型:text/xml; 字符集=utf-8“

等等,直到我得到 连接被拒绝,我不得不等待。如果会话ID是从上面的代码在SOAP头中传递的,则响应如下所示

字符串(414)“HTTP/1.1200确定日期:2014年8月1日星期五20:58:18 GMT 服务器:apacheset Cookie:PHPSESSID=93b23bb6e611db8548f2ee9485bc7d17; path=/Expires:Thu,1981年11月19日08:52:00 GMT缓存控制:无存储, 无缓存,必须重新验证,后检查=0,预检查=0 Pragma:无缓存 设置Cookie:PHPSESSID=93b23bb6e611db8548f2ee9485bc7d17;路径=/ 内容长度:560连接:关闭内容类型:text/xml; 字符集=utf-8“


您需要使用SoapClient类上的Cookie和uuSetCookie方法来获取和设置SOAP调用期间使用的会话ID

您的代码如下所示:

$requestParams = 'Parameters I am passing into the WS'
$sessionId = "93b23bb6e611db8548f2ee9485bc7d17";

$client = new SoapClient('https://webservice.wsdl',array(
                'login' => "user",
                'password' => "password",
                'trace' => 1));
$client->__setCookie('PHPSESSID', $sessionId);

// ... your requests
如果在脚本的单独无状态运行中进行调用,那么还需要设置一些持久性方法,以使会话ID在不同的使用之间持久化

$requestParams = 'Parameters I am passing into the WS'
$sessionId = "93b23bb6e611db8548f2ee9485bc7d17";

$client = new SoapClient('https://webservice.wsdl',array(
                'login' => "user",
                'password' => "password",
                'trace' => 1));
$client->__setCookie('PHPSESSID', $sessionId);

// ... your requests