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 “在 C:\MY-DEV-FOLDER\index.php 中的第 42 行抛出异常 - SOAP-ERROR: Parsing WSDL: could not load from ' https://id3check.gb.co.英国/gbportalinternational/aspx/id3check_1b.asmx?WSDL '

谁能告诉我有什么问题?

谢谢

埃雷兹

4

2 回答 2

12

您需要在 PHP 中启用 OpenSSL 才能通过 https 检索内容。

在 php.ini 中取消注释此行

extension=php_openssl.dll

openssl在 phpinfo() 中查找该部分:

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 回答