PHP 用の Wso2 Web Services Framework (WSF) を Zend Server CE 5.5 と共に使用していますが、何らかの理由で、Web サービスへの接続フェーズの最終段階で問題が発生します。
Web サービス (.NET に組み込まれていると思います) は、ユーザー/パスワード認証やクライアント証明書を必要とせずに、HTTPS 経由の呼び出しを受け入れます。また、WSClient で WSDL を使用します。
したがって、接続するときは、以下のパラメーターを設定するだけです。
$settings = array(
"wsdl" => realpath(dirname(__FILE__) . "/resources/wsdl.xml"),
"classmap" => $classMap, // classMap maps the WSDL names to corresponding PHP classes
"CACert" => realpath(dirname(__FILE__) . "/resources/cert.pem"),
"timeout" => 40,
"useSOAP" => "1.2",
"useWSA" => 1.0
);
WSDL 内にあるポリシーは次のとおりです。
<wsp:Policy wsu:Id="BasicHttpBinding_IApplication_policy" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate="false"/>
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
</wsp:Policy>
</sp:TransportBinding>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
wsf_php_client.log
接続が確立されていないことがわかりましたが、問題がどこにあるのかを正確に特定することは困難です. [info]
ログの行は、[error]
後で開始するものですか?
[warning] msg_ctx.c(1384) RampartClientConfiguration not set in message context
[info] [ssl client] Client certificate chain filenot specified
[error] http_sender.c(1355) Error occurred in transport
[error] engine.c(171) Transport sender invoke failed
[error] wso2-wsf-php-src-2.1.0/src/wsf_wsdl.c(1226) [wsf_wsdl] Response envelope not found
すべての段階で、すべてが順調に見えます。wsf_process_wsdl
の関数によって返されたデータを確認しましたが、収集されたwsf_wsdl.php
データは問題ないようです。
少なくとも私の問題に触れているように見えるほとんどのwso2フォーラムスレッドを掘り下げましたが、これに正確に対応するものはありません. 問題がどこにあり、どのように解決するかについての選択肢が本当に不足しています。設定配列を使用して WSClient を設定するときに何か不足していますか?