1

我在通过 PHP 的 SoapClient 连接到 Magento SOAP API 时遇到问题。我的开发服务器上有一个小的测试 PHP 文件设置,代码如下:

<?php
$soapC = new SoapClient('http://XXXX.com/api/soap/?wsdl', array('trace'=>true, 'exceptions'=>false));
$session = $soapC->__soapCall('login', array('TestUsr', 'test123'));
var_dump($session);
?>

PHP 文件与我的 magento 开发版本位于同一台服务器上。当我通过命令行运行 php 脚本时,$session 变量会输出一个带有错误的 SoapFault 对象,上面写着“看起来我们没有 XML 文档”。

不知道如何解决这个问题。当我尝试下面的代码时,我能够打印出所有 API 方法,但由于某种原因,上面的登录方法调用导致了问题。

$soapC = new SoapClient('http://XXXX.com/api/soap/?wsdl', array('trace'=>true, 'exceptions'=>false));
print_r($soapC->__getFunctions());
4

3 回答 3

3

此错误通常意味着问题出在服务器端。处理请求的服务器未输出有效的 XML。检查是否没有发生错误或重定向。

如果您在浏览器中访问服务器端点会发生什么?

于 2012-10-16T03:15:53.977 回答
1

我意识到问题是当服务器尝试访问 wsdl 文件时,Magento 正在向店面发出 302 重定向。

为了解决这个问题,我登录到 Magento 管理面板,导航到系统 -> 配置 -> Web,然后关闭“自动重定向到基本 URL”。现在就像一个魅力。

于 2012-10-17T18:40:08.167 回答
0

从远程服务器或本地服务器打开php.ini文件并将always_populate_raw_post_data设置为-1

之后,您需要重新启动 Apache 服务器。

重启完成后,请再次运行您的脚本。

于 2017-02-14T12:26:45.973 回答