当我尝试使用以下代码使用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
我使用相同的代码来调用远程副本,这没关系。可能是什么问题?
答案 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;