I am using the XML-RPC CookComputing library in an attempt to create a C # console client to execute API methods in Moodle (an open source control system). The server uses ZEND XML-RPC.
When I run the code, I get a TypeLoadException that was unhandled by referring to this line:
System.Object myResults = proxy.moodle_user_get_user_by_id(myUserIds);
"Inheritance security rules that are violated when overriding an element: 'CookComputing.XmlRpc.XmlRpcFaultException.GetObjectData (System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext).' The security accessibility of the overriding method should be consistent with the security accessibility of the overriding method."
My client code:
... using CookComputing.XmlRpc; [XmlRpcUrl("http://moodle.ourcompany.com/webservice/xmlrpc/server.php?wstoken=somereallylongtokenstring")] public interface IMoodleUserGetUsersById : IXmlRpcProxy { [XmlRpcMethod("moodle_user_get_users_by_id")] System.Object moodle_user_get_user_by_id(int[] userIds); } namespace Moodle_test_api1 { class Program { static void Main(string[] args) { Console.WriteLine("Testing XML-RPC Services for Moodle!"); IMoodleUserGetUsersById proxy = XmlRpcProxyGen.Create<IMoodleUserGetUsersById>(); int[] myUserIds = {11, 12}; System.Object myResults = proxy.moodle_user_get_user_by_id(myUserIds);
}
API documentation for the method I want to use:
moodle_user_get_users_by_id: Get users by id. Arguments --------- userids (Required) General structure list of ( int //user ID ) XML-RPC (PHP structure) [userids] => Array ( [0] => int ) Response: General structure ----------------- list of ( object { id double //ID of the user username string //Username policy is defined in Moodle security config firstname string //The first name(s) of the user lastname string //The family name of the user email string //An email address - allow email as root@localhost auth string //Auth plugins include manual, ldap, imap, etc confirmed double //Active user: 1 if confirmed, 0 otherwise idnumber string //An arbitrary ID code number perhaps from the institution lang string //Language code such as "en", must exist on server theme string //Theme name such as "standard", must exist on server timezone string //Timezone code such as Australia/Perth, or 99 for default mailformat int //Mail format code is 0 for plain text, 1 for HTML etc description string //User profile description descriptionformat int //User profile description format city string //Home city of the user country string //Home country code of the user, such as AU or CZ customfields Optional //User custom fields (also known as user profil fields) list of ( object { type string //The name of the custom field value string //The value of the custom field } )} )
Any suggestions would be helpful, including if I go to the token in the right place?
TIA.
source share