Intereting Posts
Symfony2: Чтение файлов cookie PHP, как эхо-данные конкретных объектов из массива? неопределенная ошибка индекса в запросе mysql GAE, PHP и GCM: не удалось открыть поток: HTTP-запрос не удался! Метод HTTP / 1.0 405 не разрешен Fecebook Messenger Bot на PHP не всегда отвечает пользователю Как преобразовать временную метку LDAP в временную метку Unix Как получить идентификатор клиента из объекта события в полосе Как получить кратчайшее, а не максимально возможное совпадение регулярных выражений с preg_match () Как динамически генерировать инструкцию MYSQL UPDATE на основе определенных переменных из HTML FORM PHP: Ошибка при включении и требовании файлов Отправка электронной почты с localhost в php в windows Как я могу загрузить более 50 МБ mp4 видео в codeigniter? Использование Ion Auth как отдельного модуля в структуре HMVC Конкретная строка в MYSQL Сообщение не работает в Ajax для сохранения ввода в базу данных

Ошибка Magento API v2 PHP

Я пытаюсь использовать SOAP с C #. Magento 1.4.2.

http://localhost/api/v2_soap/?wsdl 

Здесь я вижу catalogProductCreate

Поэтому я пытаюсь установить соединение с:

 $proxy = new SoapClient('http://localhost/api/v2_soap/?wsdl'); $sessionId = $proxy->login('xxx', 'xxxxxx'); // user with full access $newProductData = new stdClass(); $newProductData->name = 'Product Name'; $newProductData->description = 'Description'; $newProductData->short_description = 'Short Description'; $newProductData->websites = array(138); $newProductData->categories = array(7,15); $newProductData->status = 1; $newProductData->price = 45; $newProductData->tax_class_id = 2; $newProductData->weight = 1; $result = $proxy->catalogProductCreate( $sessionId, // Soap Session 'simple', // Product Type 4, // Attribute Set Id (Default) 'product-sku', // Product Sku $newProductData // Product Data ); 

Но я получаю этот результат:

Неустранимая ошибка: исключить исключение SoapFault: [4] Путь к ресурсам не может быть вызван.

(подробности – Magento 1.6.x, но методы, если не детали, должны быть применимы к другим версиям)

Я полагаю, основываясь на вашем примере кода, что вы используете PHP-клиентский код для проверки существования метода, который затем можно применить к вызову из вашего приложения C #?

Предполагая, что это так, это означает, что вы знаете PHP, поэтому вы захотите отладить это на уровне PHP-сервера Magento. Единственный файл класса, который производит эту ошибку,

 app/code/core/Mage/Api/Model/Server/Handler/Abstract.php 

Либо добавьте следующий журнал для временного и непосредственного доступа к этому файлу, либо удалите копию файла класса в

 app/code/local/Mage/Api/Model/Server/Handler/Abstract.php 

для переопределения кодировки.

Просмотрите этот файл класса для следующего исключения

 throw new Mage_Api_Exception('resource_path_not_callable') 

Это то, что заставляет мыльный сервер Magento реагировать с этой ошибкой. В этом файле есть четыре места. Добавьте вызовы регистрации выше каждого из них.

 Mage::Log(sprintf('Line %s in file %s',__LINE__, __FILE__)); throw new Mage_Api_Exception('resource_path_not_callable'); 

Это позволит вам узнать, какая ошибка вызывает вашу проблему, из которой вы можете отлаживать и регистрировать дальше. Это может произойти в двух местах (четыре файла в файле, один для обычного вызова, другой для многократного вызова).

В порядке появления, с возможными причинами в комментариях.

 //here magento is attempting to instantiate the "API Model" that will perform //the work of your API call. Upon instantiation, it discovers that the model //doesn't inherit from Mage_Api_Model_Resource_Abstract, and bails. //This is rare for a non-custom API call, but might be caused by a class rewrite //gone amuck, or a very hacked system try { $model = Mage::getModel($modelName); if ($model instanceof Mage_Api_Model_Resource_Abstract) { $model->setResourceConfig($resources->$resourceName); } } catch (Exception $e) { Mage::Log(sprintf('Line %s in file %s',__LINE__, __FILE__)); throw new Mage_Api_Exception('resource_path_not_callable'); } //Here Magento's been able to instantiate the $model, and is checking if the method is //callable. If not, it bails. Again, for a standard, stock API call this shouldn't //be happening, but could be the result of a rewrite gone wrong, or someone hacking an //api class to make the method non accesible, or someone hacking the method mapping in api.xml if (is_callable(array(&$model, $method))) { if (isset($methodInfo->arguments) && ((string)$methodInfo->arguments) == 'array') { return $model->$method((is_array($args) ? $args : array($args))); } elseif (!is_array($args)) { return $model->$method($args); } else { return call_user_func_array(array(&$model, $method), $args); } } else { Mage::Log(sprintf('Line %s in file %s',__LINE__, __FILE__)); throw new Mage_Api_Exception('resource_path_not_callable'); } 

Выясните, почему Magento бросает ошибку API. Он будет часто указывать на тип вашего вызова на мыло, или указывать на то, что было взломано в вашей системе PHP

Убедившись, что вы можете использовать ресурс wsdl правильно, но я также столкнулся с этой проблемой, когда у меня не было пользователя, настроенного на правильные разрешения в роли.

Попробуйте создать пользователя webservice с ролью и назначьте их роли, имеющей доступ к «ALL». параметр в меню ресурсов роли в информации о роли.

Поместите этот файл в корневую папку magento / project, чтобы вы могли получить доступ ко всему методу magento.

Наслаждайтесь идеей …