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); } }