我在尝试创建新的 SoapClient 时收到以下错误。
致命错误:未捕获的 SoapFault 异常:[WSDL] SOAP 错误:解析 WSDL:无法从"https://api.mindbodyonline.com/0_5/ClassService.asmx?wsdl"加载:无法加载 C:\xampp\htdocs\Work\Ice\default\soaptest.php:8 中的外部实体"https://api.mindbodyonline.com/0_5/ClassService.asmx?wsdl" 堆栈跟踪:#0 C:\xampp\htdocs\Work\Ice\default\soaptest.php(8): SoapClient->SoapClient('https://api.min...') #1 {main} 在 C:\xampp\htdocs\Work\Ice\default\soaptest.php 中抛出第 8 行
什么会导致 WSDL 无法加载?
在 php 中启用 openssl.ini则通过 https 加载 WSDL,这仅在启用 openssl 模块时有效。
但如果您使用的是 Github 上的 Minbody API 上提供的 PHP 类,请注意他们最近更新了它们。我在classService.php上遇到了同样的问题。如果您使用的是 classService.php,请将构造函数更新为以下内容(同样适用于其他服务):
function __construct($debug = false)
{
$endpointUrl = "https://" . GetApiHostname() . "/0_5/ClassService.asmx";
$wsdlUrl = $endpointUrl . "?wsdl";
$this->debug = $debug;
$option = array();
if ($debug)
{
$option = array('trace'=>1);
}
$this->client = new soapclient($wsdlUrl, $option);
$this->client->__setLocation($endpointUrl);
}