2016-09-06 19 views
0

SOAPのUIでは、いくつかのリクエストプロパティ、具体的にはUsername,とWSS-Password Typeを渡すことができます。SOAPリクエストのプロパティをPHPで渡す方法(SoapUIのように)

$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")); 

しかし、私:私はそうのようなのSoapClient関数の2番目のパラメータとしてPHPでこれらの値を渡して試してみた

Marked up screenshot of SOAP UI

:彼らは赤いボックスで、以下のスクリーンショットでマークされていますAn error occurred when verifying security for the message.

WSDL私はここではですが、私の質問は一般的にこのようにリクエストのプロパティを渡すことについてですが、実際https://rev-int.api.us.fleetmatics.com/Vehicle/SageQuest/VehicleService.svc?wsdl

答えて

0

ユーザー名とパスワードのセキュリティヘッダーがメッセージ自体とともに送信される可能性がありますが、このヘッダーはSoapUIの通常のウィンドウに表示されません。

SoapUIの下部パネルで[http log]をクリックすると、通信全体が表示されます。 Headerのithemsを徹底的に見てください。

ヘッダーがある場合は、関数SOAP呼び出しの前にPHPで設定する必要がありますが、クライアントを作成した後でなければなりません。

使用__ setSoapHeaders()私もそのセキュリティエラーを得ていたPHP

+0

マイナス。渡された文字列のどれもヘッダーのどこにも見えません。セッションIDは、ここで説明されているようなWSSの疑いがあります。http://php.net/manual/en/soapclient.soapclient.php#97273しかし、私はまだそれを実装する方法がわかりません解決策は、すべての私の試行が失敗したからです。 – Bing

+0

sessionIDはありますが、ユーザー名とパスワードがない場合は、見ているサーバーとの最初の通信ではないと思います。私の考えは、ユーザー名とパスワードがサーバーに送られる前のものがあったということです。 私はリンク先のページに精通しています。情報はOKですが、xmlコードを知っていると、私の意見ではもっと簡単に行うことができます: '$ xml = SoapUIのセキュリティヘッダーのコピー; $ securityToken =新しいSoapVar($ xml、XSD_ANYXML); $ header =新しいSoapHeader($ nsWSSE、 'Security'、$ securityToken); $ client - > __ setSoapHeaders($ header) ' –

+0

SoapUIから' Security headerのコピーをどこから取得していますか?私のヘッダーセクションは完全に空白です(1749msの応答時間のちょうど上にある 'Headers(0) 'として添付された画像に見られるように)。 – Bing

0

でヘッダーを設定します。

私はsoapuiツールも使用しました。しかし、私はBoomerangと呼ばれるChrome Appでより良い成功を収めました。

[認証]で[WSS PasswordText]を選択する必要がありますが、すべて正常に機能しているようです。

Boomerangが生成するxmlをPHPにコピーすることもできます。

enter image description here

enter image description here

関連する問題