4

https を含む WS (WSDL) で PHP SoapClient を使用する際に問題があります。私のPHPバージョンは5.2.5です。あなたが尋ねる前に、はい、私は PHP の Soap と openSSL エクステンションを使用しています。

私が到達しようとしている URL は次のとおりです。 https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL

私が使用しているコード:

$url = "https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL";
$options["connection_timeout"] = 25;  
$options["location"] = $url;

$client = new SoapClient($url,$options);

SoapClient の構築中に失敗し、次のエラーが発生します。

警告: SoapClient::SoapClient( https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL ): ストリームを開くことができませんでした: 接続先が一定時間後に適切に応答しなかったため、接続の試行に失敗しましたまたは、接続されたホストが応答しなかったために確立された接続が失敗しました。C:\MY-DEV-FOLDER\index.php の 42 行目 警告: SoapClient::SoapClient(): I/O 警告: 外部エンティティの読み込みに失敗しました " https://id3check.gb.co.uk/gbportalinternational/ aspx/id3check_1b.asmx?WSDL " in C:\MY-DEV-FOLDER\index.php 行 42 例外がスローされました - SOAP-ERROR: WSDL の解析: ' https://id3check.gb.co から読み込めませんでした。 uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL '

誰が私に何が問題なのか教えてもらえますか?

ありがとう

エレス

4

2 に答える 2

12

https 経由でコンテンツを取得できるようにするには、PHP で OpenSSL を有効にする必要があります。

php.ini でこの行のコメントを外します

extension=php_openssl.dll

phpinfo() で次のセクションを探しopensslます。

OpenSSL support => enabled  
OpenSSL Library Version => OpenSSL 0.9.8k 25 Mar 2009
OpenSSL Header Version => OpenSSL 0.9.8k 25 Mar 2009
于 2010-09-21T19:30:28.857 に答える
2

私はあなたが与えたコードを実行しただけで、それは完璧に機能しました:

<?php
$url = "https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL";
$options["connection_timeout"] = 25;
$options["location"] = $url;
$options['trace'] = 1;

$client = new SoapClient($url,$options);

print_r($client->__getFunctions());

結果は

Array
(
    [0] => ID3CheckInitialise_1bResponse ID3CheckInitialise_1b(ID3CheckInitialise_1b $parameters)
    [1] => ID3AddressLookupInitialise_1bResponse ID3AddressLookupInitialise_1b(ID3AddressLookupInitialise_1b $parameters)
    [2] => ID3Check_1bResponse ID3Check_1b(ID3Check_1b $parameters)
    [3] => AddressLookup_1bResponse AddressLookup_1b(AddressLookup_1b $parameters)
)

したがって、ネットワークに問題があるかどうかを確認する必要があります。サーバープロセス内からの通信をブロックしているファイアウォールはありますか?(IISだと思いますか?)safe_mode設定を確認することもできますが、これがここでの問題ではないかと思います。

于 2010-09-16T11:45:43.467 に答える