Magento SOAP Access被拒绝

时间:2015-06-07 06:07:29

标签: php soap magento-1.9 access-denied

当我尝试使用以下代码使用webservice调用我的本地Magento 1.9时,似乎它给了我访问被拒绝错误。

使用SOAPUI(或其他soap客户端)调用相同的地址没问题。

PHP代码

<?php
$client = new SoapClient('http://localhost/magento/index.php/api/soap/?wsdl', array('trace' => 1));

$session = $client->login('apiuser', 'apikey');

echo "REQUEST:\n" . $client->__getLastRequest() . "\n";
echo "Response:\n" . $client->__getLastResponse() . "\n";
?>

回应:

$ php -f catalog_product_list.php
PHP Fatal error:  Uncaught SoapFault exception: [2] Access denied. in /catalog_product_list.php:5
Stack trace:
#0 /catalog_product_list.php(5): SoapClient->__call('login', Array)
#1 /catalog_product_list.php(5): SoapClient->login('apiuser', 'apikey')
#2 {main}
  thrown in /catalog_product_list.php on line 4

我使用相同的代码来调用远程副本,这没关系。可能是什么问题?

3 个答案:

答案 0 :(得分:0)

这听起来像是CORS的一个问题。 (Cross Origin Resource Scripting)考虑使用Google搜索CORS和您的特定开发堆栈。

答案 1 :(得分:0)

之前我正在使用这个地址。无论是php还是soapui都可以。

http://localhost/magento/index.php/api/?wsdl

现在我在我的soapui和php中使用这个地址。两者现在都在工作。 http://localhost/magento/index.php/api/soap/?wsdl

答案 2 :(得分:0)

解决方案是
1。创建一个新的SOAP / XML-RPX角色,比如&#34;测试&#34;
2。在角色资源中,只需选择&#34;全部&#34;资源访问(仅用于测试)
3。编辑用户并将角色分配给&#34;测试&#34;