2010-06-11 107 views
2

通過HTTPS PHP中的WSDL當我試圖連接到一個Web服務,我總是得到一個故障調用使用Zend SOAP客戶端

的SOAPFault例外:爲驗證安全性時:[S發件人]時出現錯誤消息

我也有使用安全頭,全SOAP請求被髮送:

<env:Envelope> 
<env:Header> 
<ns2:Action env:mustUnderstand="1"> 
http://ws.agiv.be/crabtools/ICRABTools/GetAddressLocation 
</ns2:Action> 
<ns2:MessageID>urn:uuid:10000001blsd-ghfs</ns2:MessageID> 
<ns2:ReplyTo> 
<ns2:Address> 
http://www.w3.org/2005/08/addressing/anonymous      
</ns2:Address> 
</ns2:ReplyTo> 
<ns2:To>https://grab.beta.agiv.be/Tools/CRABTools.svc</ns2:To> 
<o:Security env:mustUnderstand="1"> 
<wsu:Timestamp env:mustUnderstand="1"> 
<wsu:Created>2010-06-09T13:44:19Z</wsu:Created> 
<wsu:Expires>2010-06-09T13:49:19Z</wsu:Expires> 
</wsu:Timestamp> 
<o:UsernameToken> 
<o:Username>myUsername</o:Username> 
<o:Password>myPassword</o:Password> 
</o:UsernameToken> 
</o:Security> 
</env:Header> 
<env:Body> 
<ns1:GetAddressLocation> 
<ns1:houseNumberId>2306852</ns1:houseNumberId> 
</ns1:GetAddressLocation> 
</env:Body> 
</env:Envelope> 

我的用戶名和密碼是否正確,我已經嘗試過媒體鏈接以後更改的截止日期,但不解決它。

這個故障的原因是什麼?

也許我必須在我的php代碼中配置更多的東西。

我創建的覆蓋Zend_Soap_Client

public function __soapCall($function_name, $arguments, $options=null, $input_headers=null, $output_headers=null) { 
     $inputheaders = array($this->wsactionheader(),$this->unencryptedSecurityHeader()); 
     $result = parent::__soapCall($this->functionname, $arguments, $options, $inputheaders); 
     return $result; 
    } 
+0

我重寫Zend__Soap_client,更新了我的問題 – 2010-06-11 13:52:56

回答

0

如果您告訴我們您正在嘗試連接到什麼樣的服務器的它可以幫助一類。 也請在這裏提供請求標題。這樣

echo "REQUEST HEADERS:\n" . $client->getLastRequestHeaders() . "\n"; 
echo "REQUEST:\n" . $client->getLastRequest() . "\n"; 

使用代碼你可以做的是:

1)確保你已經在你的SOAP客戶端指定的WSDL。

2)它可能是「命名空間」問題。請確保您的SOAP請求都使用相同的「信封」的格式爲您的服務器(在WSDL中指定),即檢查命名空間屬性,如

xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:env="http://www.w3.org/2003/05/soap-envelope" 

如果命名空間是從一個在您的WSDL不同儘量避免明確在包含在Zend_Soap_Client中的內置PHP SoapClient中指定'soap_version'。前者總是指定'soap_version',這導致xmlns:env="http://www.w3.org/2003/05/soap-envelope"

3)詢問工作請求XML示例和/或完整的HTTP跟蹤並與您的比較(差異)。