パスワードで保護され、URL が https である Web サービスに接続しようとしています。スクリプトがリクエストを行う前に認証する方法がわかりません。サービスを定義するとすぐにリクエストが行われるようです。たとえば、次のように入力すると:
$client = new SoapClient("https://example.com/WSDL/nameofservice",
array('trace' => 1,)
);
ブラウザでサイトにアクセスすると、次のようになります。
Fatal error: Uncaught SoapFault exception:
[WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from
'https://example.com/WSDL/nameofservice' in /path/to/my/script/myscript.php:2
Stack trace: #0 /path/to/my/script/myscript.php(2):
SoapClient->SoapClient('https://example...', Array) #1 {main} thrown in
/path/to/my/script/myscript.php on line 2
サービスを SOAP サーバーとして定義しようとすると、次のようになります。
$server= new SoapServer("https://example.com/WSDL/nameofservice");
私は得る:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>WSDL</faultcode>
<faultstring>
SOAP-ERROR: Parsing WSDL:
Couldn't load from 'https://example.com/WSDL/nameofservice'
</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
サーバーが何を返すかを確認するために未加工のリクエスト エンベロープを送信することはまだ試していませんが、回避策になる可能性があります。しかし、php組み込みクラスを使用して設定する方法を誰かが教えてくれることを望んでいました。配列に「userName」と「password」を追加してみましたがだめでした。問題は、リクエストを拒否しているかどうかは言うまでもなく、リモート サイトに到達しているかどうかさえまったくわからないことです。