(detalles son 1.6.x Magento específica, pero las técnicas, si no los detalles, deberían ser aplicables a otras versiones)
Asumo, basado en su ejemplo de código, que está utilizando el código de cliente PHP para probar la existencia de un método, que luego puede aplicar a una llamada desde su aplicación C#?
Suponiendo que ese sea el caso, significa que conoce PHP, por lo que querrá depurar esto en el nivel de PHP del servidor de jabón de Magento. El archivo de clase única que produce que la culpa es
app/code/core/Mage/Api/Model/Server/Handler/Abstract.php
agregue el siguiente registro temporal y directamente a ese archivo, o deje caer una copia del archivo de clase en
app/code/local/Mage/Api/Model/Server/Handler/Abstract.php
para una anulación codepool.
Buscar en el archivo de clase para la siguiente excepción
throw new Mage_Api_Exception('resource_path_not_callable')
Esto es lo que hace que el servidor de jabón Magento a la respuesta con la que falla. Hay cuatro lugares en los que esto sucede en ese archivo. Agregue las llamadas de registro sobre cada uno.
Mage::Log(sprintf('Line %s in file %s',__LINE__, __FILE__));
throw new Mage_Api_Exception('resource_path_not_callable');
Esto le permitirá saber qué falla está causando su problema, desde la cual puede depurar y registrar más. Hay dos lugares en los que esto puede suceder (cuatro en total en el archivo, uno para una llamada normal, otro para la llamada múltiple).
En orden de aparición, con posibles causas en los comentarios.
//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');
}
Descubre por qué Magento está arrojando el error de la API. A menudo apunta a un tipo en su llamada de jaula, O le apunta hacia lo que ha sido pirateado en su sistema PHP
¿Qué parte del error no entiendes exactamente? ¿Puedes elaborar? – hakre
http: // localhost/api/v2_soap /?wsdl ábrelo en tu navegador para ver si hay un método como catalogProductCreate –
Sé que esto significa que no puedo encontrar ese método ... pero puedo verlo en el xml ... ¿Cómo puedo solucionar esto? – Ste