I’m trying to program Magento from c#. In the first step I added Service Reference to project in Visual Studio. But I don’t have MagentoService Class. I have it when I download wdsl file and convert it by wsdl.exe from Visual Studio Command Line. So, in the case with service reference, my code looks like this:
MagentoSer.Mage_Api_Model_Server_HandlerPortTypeClient client = new MagentoSer.Mage_Api_Model_Server_HandlerPortTypeClient();
var session= client.login("id", "password");
client.call(session, "catalog_category.tree", null);
client.endSession(session);
everything works all right. But when I’m trying to use
MagentoSer.Mage_Api_Model_Server_HandlerPortTypeClient client = new MagentoSer.Mage_Api_Model_Server_HandlerPortTypeClient();
var session= client.login("id", "password");
client.call(session, "product_stock.list", "qqaz");
client.endSession(session);
Exception occurs “Error in deserializing body of reply message for operation ‘call’” The specified type was not recognized: name=’Map’, namespace=’http://xml.apache.org/xml-soap’, at ."}
When testing from PHP everything works ok. I have found this two articles http://codeblow.com/questions/php-web-service-in-c-invoke-function-returns-null/ PHP Web Service in C# : Invoke() function returns null but I can’t catch the big picture.
Are those about object args in
public object call(string sessionId, string resourcePath, object args);
or about output from function? And one more thing. When searching the Web I have found example of code (Magneto help) where strange arrays are used (like complexFilter). How Can I get them if I connect to wsdl file via Visual Studio? Is this in Magento Administrator rights to expose them to me?
Best Regards
Przemysław Staniszewski
In Magento admin panel try to switch on the WSI Compliance mode.