PHP Soap MustUnderstand

时间:2012-05-02 12:42:32

标签: php zend-framework soap

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

昨天我在标题的Security元素上收到了一个名为MustUnderstand = 1的调用。然后soap_server抛出:标题不明白。

是否可以通过解决方法让zend_soap_server忽略标题上的mustunderstand = 1?

1 个答案:

答案 0 :(得分:4)

只需实现一个名为Attribute的函数,如果没有必要,则不在其中执行任何操作。

不要在其中使用“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>

您必须实现这样的类:

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;
    }

}