2016-09-06 101 views
0

在SOAP UI中,我能夠傳遞一些請求屬性,具體爲Username,PasswordWSS-Password Type如何在PHP中傳遞SOAP請求屬性(如SoapUI所示)

Marked up screenshot of SOAP UI

我試圖在PHP中傳遞這些值作爲SoapClient的功能,像這樣的第二個參數:

$soap = new SoapClient('https://rev-int.api.us.fleetmatics.com/Vehicle/SageQuest/VehicleService.svc?wsdl', 
     array("Username" => "[email protected]", 
       "Password" => "notarealpassword", 
       "WSS-Password Type" => "PasswordText")); 

但我他們是由一個紅色框標註在下面的屏幕截圖獲得安全錯誤:An error occurred when verifying security for the message.

我打電話本身的WSDL在這裏,雖然我的問題是關於請求傳遞性能一般這種方式,真正的ly:https://rev-int.api.us.fleetmatics.com/Vehicle/SageQuest/VehicleService.svc?wsdl

回答

0

很可能帶有用戶名和密碼的安全頭與消息本身一起發送,但在SoapUI的普通窗口中看不到此頭。

單擊SoapUI底部面板中的「http log」查看整個通信。仔細查看Header ithems。

如果有任何頭文件,它們必須在您的PHP函數SOAP調用之前設置,但在您構建客戶端之後。

使用__ setSoapHeaders()在PHP

+0

負。沒有任何字符串通過標題中的任何地方顯而易見。會議ID是,我懷疑是來自WSS可能是這裏描述http://php.net/manual/en/soapclient.soapclient.php#97273,但我仍然不知道如何實現解決方案,因爲我所有的嘗試都失敗了。 – Bing

+0

如果有會話ID但沒有用戶名/密碼,那麼我認爲它不是與您正在查看的服務器的初始通信。我相信,之前有一個用戶名和密碼被髮送到服務器的地方。 我熟悉你鏈接到的頁面,並且信息沒問題,儘管在我看來,當你知道xml代碼時,可以做得更簡單:'$ xml =從SoapUI安全頭部的副本; $ securityToken =新的SoapVar($ xml,XSD_ANYXML); $ header = new SoapHeader($ nsWSSE,'Security',$ securityToken); $ client - > __ setSoapHeaders($ header)' –

+0

你從哪裏得到SoapUI的Security頭文件?我的標題部分是完全空白的(正如你可以在我作爲'Headers(0)'附加的圖像中看到的那樣,只是在1749ms的響應時間之上)。 – Bing

0

我也越來越認爲安全錯誤設置頭。

我也使用了soapui工具。但是我使用名爲Boomerang的Chrome應用程序獲得了更好的成功。

您需要在Auth下選擇WSS PasswordText,然後所有內容似乎都起作用。

然後,您甚至可以將Boomerang生成的xml複製到PHP中,並且它也可以工作。

enter image description here

enter image description here