//// /// Copyright (c) 2016 Saúl Piña . /// /// This file is part of xmlrpcwsc. /// /// xmlrpcwsc is free software: you can redistribute it and/or modify /// it under the terms of the GNU Lesser General Public License as published by /// the Free Software Foundation, either version 3 of the License, or /// (at your option) any later version. /// /// xmlrpcwsc is distributed in the hope that it will be useful, /// but WITHOUT ANY WARRANTY; without even the implied warranty of /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /// GNU Lesser General Public License for more details. /// /// You should have received a copy of the GNU Lesser General Public License /// along with xmlrpcwsc. If not, see . //// using System; using XmlRpc; using System.Xml; using System.Collections.Generic; using System.Text; using System.IO; namespace sandbox { /// /// This class, test the xmlrpc component on odoo 9 /// class MainClass { public static string Url = "http://localhost:8069/xmlrpc/2", db = "odoo", pass = "admin", user = "admin"; public static void TestRequestXml() { XmlRpcRequest request = new XmlRpcRequest("version"); request.AddParam(false); request.AddParam(3); request.AddParam(4.9); request.AddParam(DateTime.Now); request.AddParam(DateTime.UtcNow); request.AddParam(Encoding.UTF8.GetBytes("hello")); Dictionary dictest = new Dictionary(); dictest.Add("hello", "hello"); // request.AddParam(dictest); List listtest = new List(); listtest.Add(3); listtest.Add("hello"); listtest.Add(dictest); request.AddParam(listtest); XmlDocument xmlRequest = RequestFactory.BuildRequest(request); xmlRequest.Save(Console.Out); XmlRpcClient client = new XmlRpcClient(); client.AppName = "Test"; Console.WriteLine("\n"); Console.WriteLine(client.GetUserAgent()); } public static void TestReadVersion() { XmlRpcClient client = new XmlRpcClient(); client.Url = Url; client.Path = "common"; XmlRpcResponse response = client.Execute("version"); Console.WriteLine("version"); Console.WriteLine("REQUEST: "); client.WriteRequest(Console.Out); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("RESPONSE: "); client.WriteResponse(Console.Out); Console.WriteLine(); Console.WriteLine(); if (response.IsFault()) { Console.WriteLine(response.GetFaultString()); } else { Console.WriteLine(response.GetString()); } } public static void TestReadRecords() { XmlRpcClient client = new XmlRpcClient(); client.Url = Url; client.Path = "common"; // LOGIN XmlRpcRequest requestLogin = new XmlRpcRequest("authenticate"); requestLogin.AddParams(db, user, pass, XmlRpcParameter.EmptyStruct()); XmlRpcResponse responseLogin = client.Execute(requestLogin); // Console.WriteLine("authenticate"); // Console.WriteLine("REQUEST: "); // client.WriteRequest(Console.Out); // Console.WriteLine(); // Console.WriteLine(); // Console.WriteLine("RESPONSE: "); // client.WriteResponse(Console.Out); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("LOGIN: "); if (responseLogin.IsFault()) { Console.WriteLine(responseLogin.GetFaultString()); } else { Console.WriteLine(responseLogin.GetString()); } // SEARCH client.Path = "object"; XmlRpcRequest requestSearch = new XmlRpcRequest("execute_kw"); requestSearch.AddParams(db, responseLogin.GetInt(), pass, "res.partner", "search", XmlRpcParameter.AsArray( XmlRpcParameter.AsArray( XmlRpcParameter.AsArray("is_company", "=", true), XmlRpcParameter.AsArray("customer", "=", true) ) ) ); requestSearch.AddParamStruct( XmlRpcParameter.AsMember("limit", 2) ); XmlRpcResponse responseSearch = client.Execute(requestSearch); // Console.WriteLine(); // Console.WriteLine(); // Console.WriteLine("search"); // Console.WriteLine("REQUEST: "); // client.WriteRequest(Console.Out); // Console.WriteLine(); // Console.WriteLine(); // Console.WriteLine("RESPONSE: "); // client.WriteResponse(Console.Out); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("SEARCH: "); if (responseSearch.IsFault()) { Console.WriteLine(responseSearch.GetFaultString()); } else { Console.WriteLine(responseSearch.GetString()); } // READ XmlRpcRequest requestRead = new XmlRpcRequest("execute_kw"); requestRead.AddParams(db, responseLogin.GetInt(), pass, "res.partner", "read", XmlRpcParameter.AsArray( responseSearch.GetArray() ) ); requestRead.AddParamStruct(XmlRpcParameter.AsMember("fields", XmlRpcParameter.AsArray("name") ) ); XmlRpcResponse responseRead = client.Execute(requestRead); // Console.WriteLine(); // Console.WriteLine(); // Console.WriteLine("read"); // Console.WriteLine("REQUEST: "); // client.WriteRequest(Console.Out); // Console.WriteLine(); // Console.WriteLine(); // Console.WriteLine("RESPONSE: "); // client.WriteResponse(Console.Out); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("READ: "); if (responseRead.IsFault()) { Console.WriteLine(responseRead.GetFaultString()); } else { Console.WriteLine(responseRead.GetString()); } } public static void TestResponseXml() { XmlDocument testDoc = new XmlDocument(); // testDoc.AppendChild(testDoc.CreateElement("methodResponse")); // testDoc.LoadXml("faultCode1faultStringError"); testDoc.LoadXml("7118441012"); testDoc.Save(Console.Out); XmlRpcResponse response = ResponseFactory.BuildResponse(testDoc); if (response.IsFault()) { Console.WriteLine(response.GetFaultString()); } else { Console.WriteLine(); Console.WriteLine(); Console.WriteLine(response.GetString()); } } public static void TestCreateRecord() { XmlRpcClient client = new XmlRpcClient(); client.Url = Url; client.Path = "common"; // LOGIN XmlRpcRequest requestLogin = new XmlRpcRequest("authenticate"); requestLogin.AddParams(db, user, pass, XmlRpcParameter.EmptyStruct()); XmlRpcResponse responseLogin = client.Execute(requestLogin); // Console.WriteLine("authenticate"); // Console.WriteLine("REQUEST: "); // client.WriteRequest(Console.Out); // Console.WriteLine(); // Console.WriteLine(); // Console.WriteLine("RESPONSE: "); // client.WriteResponse(Console.Out); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("LOGIN: "); if (responseLogin.IsFault()) { Console.WriteLine(responseLogin.GetFaultString()); } else { Console.WriteLine(responseLogin.GetString()); } // CREATE client.Path = "object"; XmlRpcRequest requestCreate = new XmlRpcRequest("execute_kw"); requestCreate.AddParams(db, responseLogin.GetInt(), pass, "res.partner", "create", XmlRpcParameter.AsArray( XmlRpcParameter.AsStruct( XmlRpcParameter.AsMember("name", "Albert Einstein") , XmlRpcParameter.AsMember("image", Convert.ToBase64String(File.ReadAllBytes("img/einstein.jpg"))) , XmlRpcParameter.AsMember("email", "albert.einstein@email.com") ) ) ); XmlRpcResponse responseCreate = client.Execute(requestCreate); // Console.WriteLine(); // Console.WriteLine(); // Console.WriteLine("create"); // Console.WriteLine("REQUEST: "); // client.WriteRequest(Console.Out); // Console.WriteLine(); // Console.WriteLine(); // Console.WriteLine("RESPONSE: "); // client.WriteResponse(Console.Out); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("READ: "); if (responseCreate.IsFault()) { Console.WriteLine(responseCreate.GetFaultString()); } else { Console.WriteLine(responseCreate.GetString()); } } public static void TestSearchReadRecords() { XmlRpcClient client = new XmlRpcClient(); client.Url = Url; client.Path = "common"; // LOGIN XmlRpcRequest requestLogin = new XmlRpcRequest("authenticate"); requestLogin.AddParams(db, user, pass, XmlRpcParameter.EmptyStruct()); XmlRpcResponse responseLogin = client.Execute(requestLogin); // Console.WriteLine("authenticate"); // Console.WriteLine("REQUEST: "); // client.WriteRequest(Console.Out); // Console.WriteLine(); // Console.WriteLine(); // Console.WriteLine("RESPONSE: "); // client.WriteResponse(Console.Out); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("LOGIN: "); if (responseLogin.IsFault()) { Console.WriteLine(responseLogin.GetFaultString()); } else { Console.WriteLine(responseLogin.GetString()); } // SEARCH client.Path = "object"; XmlRpcRequest requestSearch = new XmlRpcRequest("execute_kw"); requestSearch.AddParams(db, responseLogin.GetInt(), pass, "res.partner", "search_read", XmlRpcParameter.AsArray( XmlRpcParameter.AsArray( // XmlRpcParameter.AsArray("is_company", "=", true), XmlRpcRequest.AsArray("customer", "=", true) XmlRpcParameter.AsArray("name", "ilike", "t") ) ), XmlRpcParameter.AsStruct( XmlRpcParameter.AsMember("fields", XmlRpcParameter.AsArray("name","email")) // ,XmlRpcParameter.AsMember("limit", 2) ) ); XmlRpcResponse responseSearch = client.Execute(requestSearch); // Console.WriteLine(); // Console.WriteLine(); // Console.WriteLine("search"); // Console.WriteLine("REQUEST: "); // client.WriteRequest(Console.Out); // Console.WriteLine(); // Console.WriteLine(); // Console.WriteLine("RESPONSE: "); // client.WriteResponse(Console.Out); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("SEARCH: "); if (responseSearch.IsFault()) { Console.WriteLine(responseSearch.GetFaultString()); } else { Console.WriteLine(responseSearch.GetString()); } } public static void Main(string[] args) { TestRequestXml(); // TestResponseXml(); // TestReadVersion(); // TestReadRecords(); // TestCreateRecord(); // TestSearchReadRecords(); Console.ReadKey(); } } }