未被捕获的SoapFault

时间:2013-09-29 20:01:10

标签: php xml soap

尝试创建新的SoapClient时出现以下错误。

致命错误:未捕获的SoapFault异常:[WSDL] SOAP-ERROR:解析WSDL:无法从“https://api.mindbodyonline.com/0_5/ClassService.asmx?wsdl”加载:无法在C:\ xampp中加载外部实体“https://api.mindbodyonline.com/0_5/ClassService.asmx?wsdl” \ htdocs \ Work \ Ice \ default \ soaptest.php:8堆栈跟踪:#0 C:\ xampp \ htdocs \ Work \ Ice \ default \ soaptest.php(8):SoapClient-> SoapClient('{{3} } ...')在第8行的C:\ xampp \ htdocs \ Work \ Ice \ default \ soaptest.php中抛出#1 {main}

什么会导致WSDL无法加载?

2 个答案:

答案 0 :(得分:3)

php.ini 中启用openssl,您可以通过 https 加载WSDL,这仅在启用openssl模块时有效。

答案 1 :(得分:-1)

不确定是否可能出现这种情况,但如果您使用的是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);
}