Pregunta

Hola, actualmente estoy escribiendo un servlet usando Apache XML-RPC Conectando a OpenerP. No hay buenos recursos alrededor, y los ejemplos de Java son muy minimalistas y están lejos de completar en el sitio de OperreP.

¿Alguien tiene una idea de dónde podría encontrar una API sobre cómo y qué puedo llamar en el lado de la apertura?

¡Realmente lo agradecería!

En una nota adicional, estoy buscando específicamente la sintaxis sobre cómo "leer" los datos, usando Java, con una entrada de múltiples ID.

XmlRpcClient client = new XmlRpcClient();
XmlRpcClientConfigImpl clientConfig = new XmlRpcClientConfigImpl();
clientConfig.setEnabledForExtensions(true);
clientConfig.setServerURL(new URL(urlStringObject));
client.setConfig(clientConfig);

Object[] params2 = { "city", "name", "email", "create_date","write_date" };

Vector<Object> arg = new Vector<Object>();

arg.add(database);
arg.add(1);
arg.add(password);
arg.add("res.partner.address");
arg.add("read");
arg.add(9); // <- THE PYTHON SYNTAX SAYS input 'LIST OF IDS' here What is the Jave equivalent???
arg.add(params2);

HashMap ids = (HashMap) client.execute("execute", arg);

ACTUALIZAR

/* Search for all ids */
                xmlrpcConfigLogin.setServerURL(new URL(urlStringObject));
                Object[] searchQuery = new Object[] {"id", "!=", -1 };

                Vector queryVector = new Vector();
                queryVector.addElement(searchQuery);

                Object[] params = new Object[] { database, theloginId , password, tableName, "search", queryVector };
                Object[] po_ids = (Object[]) xmlrpcLogin.execute("execute", params);                

                /* Send Read Query */
                Object[] readQuery = {"name"};      

                Vector<Object> arg = new Vector<Object>();      
                arg.add(database);
                arg.add(1);
                arg.add(password);
                arg.add(tableName);
                arg.add("read");
                arg.add(po_ids);
                arg.add(readQuery);         

                HashMap globalMap = new HashMap();

                Object[] hm = (Object[]) xmlrpcLogin.execute("execute", arg);                                   
                for (Object object : hm) {
                    HashMap hash = (HashMap)object;                             
                    globalMap.put("name", hash.get("name"));              
                    _log.info(hash.get("name"));
                }       

Como puede ver: toma un objeto [] de IDS como entrada (PO_IDS)

¿Fue útil?

Solución

Supongo que has leído el Descripción del libro de desarrolladores de XML-RPC. Creo que es solo un envoltorio alrededor de todos los Métodos en la clase ORM. Esa es toda la documentación que he visto. Aparte de eso, ejecuto Opraperp en modo de depuración y pongo un punto de descanso en el LocalService.__call__() Método para ver qué parámetros está enviando el cliente al servidor. (Está dentro server/bin/netsvc.py.) También he visto a los desarrolladores simplemente registrar todas las solicitudes que llegan a través de ese método.

En cuanto a cómo hacer las llamadas en Java, no estoy familiarizado con el XmlRpcClient API, pero parece que aceptará una variedad de objetos para una lista, y probablemente cualquier cosa que sea enumerable. Ver si el Descripción de los tipos de datos es útil y consulte el Tutorial de rastreadores de palabras. Usa un Vector Para mantener un parámetro de lista.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top