PHP Soap 必懂

use*_*781 2 php soap zend-framework

我在 Zend Framework 中有一个soap服务器,并在请求到达soap_server之前添加了一个过滤器来解析标头并允许wsse。这很好用。

昨天,我收到了一个呼叫,其标头中的 Security 元素上的属性 MustUnderstand=1。然后,soap_server 会抛出: header not Understanding。

是否可以采取解决方法让 zend_soap_server 忽略标头上的 Mustunderstand=1 ?

小智 5

只需实现一个称为属性的函数,如果不需要,则在其中不执行任何操作。

不要在其中使用“return”语句,因为它可能会返回消息而不处理正文

例子

<SOAP-ENV:Header>
    <wsa5:To SOAP-ENV:mustUnderstand="true">http://www.xxx.yyy.zzz/</wsa5:To>
    <wsa5:Action SOAP-ENV:mustUnderstand="true">someData</wsa5:Action>
</SOAP-ENV:Header>
Run Code Online (Sandbox Code Playgroud)

您必须实现这样的类:

Class MySoapServer{
    private $bar;
    private $foo;

    public function To( $data )
    {
        $this->bar = $data;
    } 

    public function Action( $data )
    {
         //do Nothing!
    } 

    public function Method1( $message )  
    {
         //....
         return $returnedValues;
    }

}
Run Code Online (Sandbox Code Playgroud)