Reputation: 3640
I'm customizing a shopping cart application in php. In this application, I have to integrate some parts with another C#.net application, so I'm using a webservice in a php shopping cart. In one method of the webservice, some values should pass as an associative array like this:
$proxy = new SoapClient('www.mywebservice.com?wsdl');
$associative_array= array(
'abc'=> 1,'def'=>0,'ghi'=>1,'jkl'=>0
);
$proxy->call($sessionId, 'methodname', array('somevalue', $associative_array));
In php its working fine... but the problem is that I'm struggling with C#.net, how can I pass an associative array with C#.net? I'm a php programmer, I think there's no associative array in C#.net and somebody said that C# Dictionary can be used instead of that, but that's not working with the webservice call.
C# code is:
Dictionary<string,string> map=new Dictionary<string,string>();
map.Add("abc","1");
map.Add("def","0");
object st = mgs.call(sessionid, "methodname", new object[] { "somevalue",map });
Can anybody give some advice???
Upvotes: 7
Views: 24988
Reputation: 1
My guess is that the reason the Dictionary isn't working with the web service call is that Dictionary isn't serializable. Try a SerializableDictionary instead; there's an implementation here:
http://www.dacris.com/blog/2010/07/31/c-serializable-dictionary-a-working-example/
Upvotes: -1
Reputation:
Try to use a Hashtable
http://msdn.microsoft.com/en-au/library/system.collections.hashtable%28v=vs.80%29.aspx
Upvotes: 0
Reputation: 190976
I think you want a Dictionary<string, int>
. But I could be wrong. You should see what the generated class is used when you call the web service.
To call the web service, right click the References folder of your project. Say Add Service Reference.
Put the WSDL url in there and let it generate the classes for you.
Upvotes: 2