Exemple #1
0
        public XMLRpcOdooClient(string url, string userName, string password, string database) : base(url)
        {
            this.UserName = userName;
            this.Password = password;
            this.Database = database;

            this.XMLRpcLoginRequest = new XMLRpcRequest
            {
                Url        = $"{UrlBase}/xmlrpc/2/common",
                MethodName = "login",
                Encoding   = Encoding.UTF8,
                Parameters = new List <IXMLRpcParameter> {
                    new XMLRpcParameter <string>
                    {
                        Name         = "db",
                        FilterOption = FilterOption.None,
                        Value        = Database
                    },
                    new XMLRpcParameter <string>
                    {
                        Name         = "username",
                        FilterOption = FilterOption.None,
                        Value        = UserName
                    },
                    new XMLRpcParameter <string>
                    {
                        Name         = "password",
                        FilterOption = FilterOption.None,
                        Value        = Password
                    }
                }
            };
        }
        /// <summary>
        /// Serialize a XMLRpcRequest
        /// </summary>
        /// <param name="request">XML Rpc Request Object</param>
        /// <returns></returns>
        public static string SerializeObject(XMLRpcRequest request)
        {
            using (var stream = new MemoryStream())
            {
                XmlWriter xmlWriter = new XmlTextWriter(stream, request.Encoding);
                xmlWriter.WriteStartDocument();
                xmlWriter.WriteStartElement("", "methodCall", "");

                xmlWriter.WriteStartElement("", "methodName", "");
                xmlWriter.WriteValue(request.MethodName);
                xmlWriter.WriteEndElement(); //Close methodName
                xmlWriter.WriteStartElement("", "params", "");
                foreach (var parameter in request.Parameters)
                {
                    SerializeParameter(xmlWriter, parameter);
                }

                xmlWriter.WriteEndElement();  //Close params
                xmlWriter.WriteEndDocument(); //Close methodCall
                xmlWriter.Flush();

                stream.Position = 0;
                StreamReader reader      = new StreamReader(stream);
                string       bodyContent = reader.ReadToEnd();
                xmlWriter.Close();
                return(bodyContent);
            }
        }