Soap WS-Security错误:安全标头不正确

时间:2015-04-20 17:15:13

标签: php soap ws-security

我尝试使用WS-Security连接到Web服务,但是收到错误消息“安全标头不正确”,这里是SoapHeader:

<soapenv:Header>
  <wsse:Security mustUnderstand="0" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <wsse:UsernameToken Id="ABC-123">
      <wsse:Username>*****</wsse:Username>
      <wsse:Password>*****</wsse:Password>
    </wsse:UsernameToken>
  </wsse:Security>
</soapenv:Header>

这是连接的Php代码:

<?php

$client = new SoapClient("https://www.weservice.com/service?wsdl");

//Body of the Soap Header. 
$headerbody = array("UsernameToken" => array("Username" => "******",
                                             "Password" => "******"));

//Create Soap Header.        
$header = new SoapHeader("wsse", "Security", $headerbody);

//set the Headers of Soap Client. 
$client->__setSoapHeaders($header);

try{
$result = $client->__soapCall("sendBill", array("fileName" => "filename",
                                                "contentFile" => "byteArray"));

}catch(SoapFault $e){
    echo $e;
}

提前致谢。

1 个答案:

答案 0 :(得分:0)

我终于以不同的方式解决了这一事件。 使用Php,字节数组中的zip文件无法发送,因为一些罕见的原因(可能是Php对SOAP协议附件的支持不足)。

所以我将语言改为C#,现在我可以测试一个虚拟文件到soap服务,我有一些(已解决的)问题,但我从服务中收到了成功的响应。