Я использую библиотеку CookComputing XML-RPC в попытке создать консольный клиент C # для выполнения методов API в Moodle (система управления обучением с открытым исходным кодом). Сервер использует ZEND XML-RPC.
Когда я запускаю код, я получаю исключение TypeLoadException: , ссылаясь на эту строку:
System.Object myResults = proxy.moodle_user_get_user_by_id(myUserIds);
"Правила безопасности наследования, нарушенные при переопределении члена: 'CookComputing.XmlRpc.XmlRpcFaultException.GetObjectData (System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)'. Доступность безопасности метода соответствия переопределения безопасная доступность переопределяемого метода. "
Код моего клиента:
...
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);
//Console.WriteLine("Trying Function: {0}:{1}", proxy.ToString());
}
}
}
Документация API для метода, который я хочу использовать:
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
}
)}
)
Были бы полезны какие-либо предложения, в том числе, если я передаю токен в нужном месте?
ТИА.