1

我正在寻求解决这个问题的帮助,我希望有人能给我帮助。错误如下:

致命错误:SOAP-ERROR:解析 WSDL:无法从“http://example.com/index.php/api/?wsdl”加载:无法加载外部实体“http://example.com/index.第 28 行 /var/www/presentacion/app/code/local/Pengo/Extension/Model/Something.php 中的 php/api/?wsdl"

我用来连接它的代码是这样的:

$this->_soap = new SoapClient(http://example.com/index.php/api/?wsdl);

它说是错误的地方。

我一直在 Google、PHP 论坛、StackOverflow 和 Magento 本身进行搜索,但我在任何地方都找不到解决方案。

我所看到的是,WSDL 永远不会像错误所说的那样被解析或加载,并且没有任何功能。

我试过这样连接:

$options['location'] = http://example.com/index.php/api/?wsdl;
$options['uri'] = 'urn:Magento';
$this->_soap = new SoapClient(null, $options);

像这样,它不会像其他那样调度任何错误,但没有要使用的函数,就像在另一种情况下它不会加载和解析 WSDL。

我有点沮丧,因为我已经开发了大约 1 个月,现在我正在做一些测试,它显示了这个消息,当它真的是空的和新的并且运行良好时,我已经测试了它。

所以任何帮助将不胜感激。

谢谢你。

4

3 回答 3

12

这个错误十分之九是 Magento 告诉您它无法加载 WSDL 文件。 Magento正在告诉你这一点。抱怨的不是您的本地客户端代码。

Magento 使用 PHPSoapServer对象来创建它的 SOAP API。该SoapServer对象也需要访问 WSDL。尝试从服务器的命令行运行以下命令

curl http://example.com/index.php/api/?wsdl

如果我是对的,以上将超时/失败。

由于 DNS 中的一些怪癖,服务器无法通过其域名访问自己的情况令人惊讶地普遍。如果是这种情况,最快的解决方法是在服务器的主机文件中添加一个条目。(如果没有任何意义,请与您的服务器管理员交谈)

于 2012-05-24T20:50:31.243 回答
0

Well after all the things that I test the only one that worked for me, I don't know why but it worked, was doing this in two separate machines. I tried that because I read that somewhere and I just do it and my Magento and Webservice now works perfectly. Whenever I try to do this local it dispatch the same error.

I hope this can help someone in the future and they don't have to knock their head on the wall because of this problem.

Thank you all for your answers and comments.

于 2012-05-29T16:45:49.667 回答
0

Alan Storm 就在这里!

确保检查您的服务器主机文件,并且它包含域和 www.domain 的条目。如果您要进行服务器重写,这尤其重要。

于 2014-02-18T10:40:49.787 回答