2015-06-20 70 views
0

我嘗試在PHP通信創建腳本WS-Security(首次):PHP SoapClient的 - 如何讓請求服務器和響應

require ('WSSoapClient.php'); 
$soapclient = new WSSoapClient('https://katastr.cuzk.cz/trial/dokumentace/ws22/wsdp/vyhledat_v22.wsdl'); 
$soapclient->__setUsernameToken('username', 'password'); 
$params = array('katastrUzemiKod'=>693936, 'kmenoveCislo'=>1385); 
$response = $soapclient->__soapCall('najdiParcelu', $params); 
var_dump($response); 

而且這個腳本失敗:

PHP Fatal error: Uncaught SoapFault exception: [wsse:InvalidSecurity] Error on verifying message against security policy Error code:1000 in /home/jura/bin/WSSoapClient.php:75

有什麼辦法可以看到,這個腳本究竟發送給服務器的是什麼以及響應是什麼?

+0

http://stackoverflow.com/questions/2987907/how-to-implement-ws-security-1-1-in-php5 – Sumurai8

回答

1

問題是$ soapclient - > __ setUsernameToken('username','password')函數期待PasswordDigest或PasswordText的第三個參數。

這在WSSoapClient類中處理不好。如果passwordType參數丟失,它應該會引發異常。它所試圖做的是:

// $this->generateWSSecurityHeader() returns an empty string if 3rd parameter missing. 

$this->__setSoapHeaders($this->generateWSSecurityHeader()); 

如果PHP是在嚴格模式下像我一樣,你會得到這些警告:

PHP的警告:SoapClient的:: __ setSoapHeaders():無效的SOAP頭...

警告:SoapClient的:: __ setSoapHeaders():無效的SOAP頭...

你需要弄清楚的密碼類型,並通過作爲你的第三個參數在setUsernameToken()函數中。

+0

要解決無效SOAP heade你需要從salesforce添加網絡訪問,如上所述https: //developer.salesforce.com/forums/?id=906F00000008pAhIAI – Ruwantha

相關問題