Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP上设置SOAP头来验证web服务?_Php_Web Services_Soap_Wsdl_Ws Security - Fatal编程技术网

如何在PHP上设置SOAP头来验证web服务?

如何在PHP上设置SOAP头来验证web服务?,php,web-services,soap,wsdl,ws-security,Php,Web Services,Soap,Wsdl,Ws Security,我需要将SOAP头设置为以下格式: <soapenv:Header> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xs

我需要将SOAP头设置为以下格式:

<soapenv:Header>
    <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <wsse:UsernameToken wsu:Id="UsernameToken-45">
            <wsse:Username>XXXXX</wsse:Username>
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">XXXXXXX</wsse:Password>
            <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">OxWtCYYj1cX7HiZeMEqorw==</wsse:Nonce>
            <wsu:Created>2013-09-18T07:25:50.227Z</wsu:Created>
        </wsse:UsernameToken>
    </wsse:Security>
</soapenv:Header>

任何帮助都将不胜感激。提前感谢。

您需要使用
SoapClient::\uu setSoapHeader()
。像这样:

$security = array(
    'Username'=>'XXXXX',
    'Password'=>'XXXXX',
    'Nonc'=> 'OxWtCYYj1cX7HiZeMEqorw==',
    'Created' => '2013-09-18T07:25:50.227Z',
    'UsernameToken' => NULL
);

$header = new SoapHeader('wsse','Security',$security, false);
$client->__setSoapHeaders($header);

您需要使用
SoapClient::\uu setSoapHeader()
。像这样:

$security = array(
    'Username'=>'XXXXX',
    'Password'=>'XXXXX',
    'Nonc'=> 'OxWtCYYj1cX7HiZeMEqorw==',
    'Created' => '2013-09-18T07:25:50.227Z',
    'UsernameToken' => NULL
);

$header = new SoapHeader('wsse','Security',$security, false);
$client->__setSoapHeaders($header);

谢谢你的回复。对不起,我对肥皂不太熟悉。六羟甲基三聚氰胺六甲醚。。。我应该如何实现SoapClient::u setSoapHeader()?我应该把它放在哪里?把它放在construtorkay下面,它用于发送请求/连接到Web服务。webservice端点是$momurl,它应该通过$params变量传递一些数据。您知道如何执行请求吗?谢谢,我已经有问题了:)把我给你的代码放在构造器下面,你这是什么意思?对不起,我有点迷路了,因为我对这些东西还不熟悉谢谢你的回复。对不起,我对肥皂不太熟悉。六羟甲基三聚氰胺六甲醚。。。我应该如何实现SoapClient::u setSoapHeader()?我应该把它放在哪里?把它放在construtorkay下面,它用于发送请求/连接到Web服务。webservice端点是$momurl,它应该通过$params变量传递一些数据。您知道如何执行请求吗?谢谢,我已经有问题了:)把我给你的代码放在构造器下面,你这是什么意思?对不起,我有点迷路了,因为我对这些东西还不熟悉