[英]PHP SoapClient - how to get request to server and response
我尝试在PHP中创建用于与WS-Security
通信的脚本(首次):
require ('WSSoapClient.php');
$soapclient = new WSSoapClient('https://katastr.cuzk.cz/trial/dokumentace/ws22/wsdp/vyhledat_v22.wsdl');
$soapclient->__setUsernameToken('username', 'password');
$params = array('katastrUzemiKod'=>693936, 'kmenoveCislo'=>1385);
$response = $soapclient->__soapCall('najdiParcelu', $params);
var_dump($response);
这个脚本失败了:
PHP致命错误:未捕获的SoapFault异常:[wsse:InvalidSecurity]根据安全策略验证消息时发生错误/home/jura/bin/WSSoapClient.php中的错误代码:1000:75
有什么办法可以看到,该脚本确切发送到服务器什么,响应是什么?
问题是$ soapclient-> __ setUsernameToken('username','password')函数需要第三个参数'PasswordDigest'或'PasswordText'。
WSSoapClient类对此进行了错误处理。 如果passwordType参数丢失,它确实应该引发异常。 它试图做的是这样的:
// $this->generateWSSecurityHeader() returns an empty string if 3rd parameter missing.
$this->__setSoapHeaders($this->generateWSSecurityHeader());
如果PHP像我一样处于严格模式,您将收到以下警告:
PHP警告:SoapClient :: __ setSoapHeaders():无效的SOAP标头...
警告:SoapClient :: __ setSoapHeaders():无效的SOAP标头...
您需要弄清楚密码类型,并将其作为第三个参数传递给setUsernameToken()函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.