(細節具體Magento的1.6.x版,但技巧,如果沒有細節,應適用於其他版本)
我假設的基礎上,您的代碼示例,您使用的是PHP客戶端代碼測試方法的存在性,然後您可以將其應用於C#應用程序的調用?
假設是這樣,這意味着你知道PHP,所以你需要在Magento soap服務器PHP級別進行調試。唯一的類文件產生故障
app/code/core/Mage/Api/Model/Server/Handler/Abstract.php
不管是臨時的,直接添加以下記錄到該文件,或在
app/code/local/Mage/Api/Model/Server/Handler/Abstract.php
下降的類文件的拷貝,codepool覆蓋。
看在類文件以下異常
throw new Mage_Api_Exception('resource_path_not_callable')
這是Magento的SOAP服務器是什麼原因引起來的響應與故障。這個文件中有四個地方發生。在每個之上添加日誌記錄調用。
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系統中被黑掉的東西
錯誤的哪個部分你不完全明白嗎?你能詳細說明嗎? – hakre 2011-12-15 13:42:12
http:// localhost/api/v2_soap /?wsdl在瀏覽器中打開它看看是否有這樣的方法catalogProductCreate – 2011-12-15 13:53:48