api – Magento肥皂错误 – 标签定义第2行中数据的过早结束

我的客户正在使用Unleashedsoftware.com连接到Magento商店.但它给出了这个错误.

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Body>
        <SOAP-ENV:Fault>
            <faultcode>WSDL</faultcode>
            <faultstring>
                SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://www.domain.com/index.php/api/v2_soap/index/wsdl/1/' : Premature end of data in tag definitions line 2
            </faultstring>
        </SOAP-ENV:Fault>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

浏览http://www.domain.com/index.php/api/v2_soap/index/时,Firebug给了我“500内部服务错误”.

当我浏览http://www.domain.com/index.php/api/v2_soap/index/wsdl/1/时,我将获得有效的XML数据.

我检查了服务器日志文件,看起来像:

[Thu Aug 30 22:22:25 2012] [warn] [client 92.92.92.92] mod_fcgid: stderr:  in /home/doaminuser/public_html/lib/Zend/Soap/Server.php on line 762

我一直在寻找几天,今天我试图将整个网站复制到另一个测试服务器,它似乎正在工作!所以这似乎是一个服务器问题.

请问,任何人都知道可能是什么问题?

有没有更好的方法来调试此问题,任何示例代码或调试提示.

Magento版本是1.6.2

谢谢.

最佳答案 由于Magento服务器与自身通信的问题,很多时候Magento的SOAP API失败.

也就是说,PHP的SOAP实现要求SOAP服务器本身通过http获取WSDL文件,并且本地网络配置问题妨碍了Magento获取它自己的WSDL.

您可以通过SSH连接到Magento服务器并运行以下命令来调试它

curl -l 'http://www.example.com/index.php/api/v2_soap/index/wsdl/1/' > /tmp/wsdl.xml

然后检查wsdl.xml文件.因为您是从Web服务器执行此操作,所以可能会获得与从本地浏览器执行此操作时不同的结果.

点赞