如何在PHP中传递SOAP请求属性(如SoapUI中所示)

时间:2016-09-06 19:45:24

标签: php web-services soap wsdl

在SOAP UI中,我能够传递一些请求属性,特别是UsernamePasswordWSS-Password Type。它们在下面的屏幕截图中用红色框标记:

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" => "blah@example.com",
              "Password" => "notarealpassword",
              "WSS-Password Type" => "PasswordText"));

但是我收到了安全错误:An error occurred when verifying security for the message.

我称之为的WSDL就在这里,虽然我的问题是关于通常以这种方式传递请求属性,但确实:https://rev-int.api.us.fleetmatics.com/Vehicle/SageQuest/VehicleService.svc?wsdl

2 个答案:

答案 0 :(得分:0)

带有用户名和密码的安全标头可能与消息本身一起发送,但您无法在SoapUI的常规窗口中看到此标头。

点击" http log"在SoapUI的底部面板中查看整个通信。仔细查看Header ithems。

如果有任何标题,则必须在PHP函数SOAP调用之前设置它们,但是在构建了客户端之后。

使用__ setSoapHeaders()在PHP中设置标题

答案 1 :(得分:0)

我也遇到了安全错误。

我也使用了soapui工具。但是我使用名为Boomerang的Chrome应用程序取得了更大的成功。

您需要在Auth下选择WSS PasswordText,然后一切似乎都有效。

然后你甚至可以将Boomerang生成的xml复制到PHP中,它也能正常工作。

enter image description here

enter image description here