Search code examples
c#.netmagentomagento-soap-api

Programming Magento with SOAP and c#


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


Solution

  • In Magento admin panel try to switch on the WSI Compliance mode.