2012-05-02 7 views
1

私はZend FrameworkにSoapサーバーを持っていて、リクエストがsoap_serverにヒットしてからヘッダーを解析してwsseを許可する前にフィルターを追加しました。これは正常に動作します。PHP Soap MustUnderstand

昨日、ヘ​​ッダーのSecurity要素でMustUnderstand = 1属性の呼び出しを受け取りました。 soap_serverはthrows:ヘッダーを認識しません。

それは、ヘッダ上のmustUnderstand = 1を無視Zend_Soap_Serverの持っている回避策を行うことは可能ですか?

答えて

4

属性と呼ばれる関数を実装し、必要がない場合はその内部に何もしないでください。

いけない、それはプロセスせずにメッセージを返す可能性があるため、その中の文を「返す」体を使用

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

}