XMLRPC java插入问题

时间:2012-06-20 04:36:36

标签: java xml-rpc

我正在尝试使用XMLPRC和java将客户详细信息插入OpenERP服务器。我能够进行身份验证。但是当我通过传递参数调用execute方法来插入记录时,在线程“main”java.lang.NullPointerException中获取Exception,行res_create = client_1.execute(“execute”,params_create);

请在下面找到我的代码


    res = client.execute("login", params);

        String url_1 = "http://agilewebdevelopment.net:8514/xmlrpc/object";
        XmlRpcClientConfigImpl config_1 = new XmlRpcClientConfigImpl();
        try {
            config_1.setServerURL(new URL(url_1));
        } catch (MalformedURLException e) {
            System.out.println("First");
            e.printStackTrace();
        }
        System.out.println(res);
        HashMap<String, Object> vals = new HashMap<String, Object>();
        vals.put("name", "Mantavya Gajjar");
        vals.put("ref", "MGA");
        XmlRpcClient client_1 = new XmlRpcClient();
        client.setConfig(config_1);
        Object[] params_create = new Object[]{"erp_performance", "1", "admin", "res.partner", "create", vals};

        Object res_create = null;
        try {
             res_create = client_1.execute("execute", params_create);
        } catch (XmlRpcException e) {
            e.printStackTrace();
        }

感谢任何帮助

3 个答案:

答案 0 :(得分:1)

如果您使用的是java 1.4,则无法进行自动装箱。 所以可以试试这个

Object [] params_create = new Object [] {“erp_performance”,“1”,“admin”,“res.partner”,“create”,vals};

只需在字符串中传递uid

也有可能是登录你必须使用“http:// localhost:8069 / xmlrpc / common” 对于对象方法,您必须使用“http:// localhost:8069 / xmlrpc / object”

检查两者,你会得到解决方案。

答案 1 :(得分:0)

尝试了解您需要发送的参数以执行该操作。由于参数不匹配,您将面临此错误。

您确定要发送的1实际上是期望整数还是字符串?一旦确定了预期参数的类型,就可以摆脱这种异常。

答案 2 :(得分:0)

如果您能够进行身份验证,这意味着您正在使用XMLRPC连接,那么现在在身份验证的情况下,您将使用的OpenERP服务是公共服务,因此您将拥有将成为http://host:posrt/xmlrpc/common的代理的客户端对象。完全正确。

但是如果你想对任何OE模型进行任何操作,那么对于那个OE提供OBJECT服务的单独服务,那么在这种情况下你的客户端对象必须是代理服务器http://host:port/xmlrpc/object然后您可以在其上调用execute方法,您可以看到我们没有为链接http://bazaar.launchpad.net/~openerp/openobject-server/trunk/view/head:/openerp/service/web_services.py#L379上的公共服务实现执行方法

有关详情,请参阅OE and JAVA

我准备了一些你试过的scartch代码

package com.xmlrpc.client;

import java.net.URL;
import java.util.HashMap;
import java.util.Vector;

import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;

public class Create {

public static void main(String args[]) throws Exception {

Vector params1 = new Vector();
params1.addElement("openerpdb");
params1.addElement("admin");
params1.addElement("admin");

XmlRpcClient xmlrpcLogin = new XmlRpcClient();
XmlRpcClientConfigImpl xmlrpcConfigLogin = new XmlRpcClientConfigImpl();
xmlrpcConfigLogin.setEnabledForExtensions(true);
xmlrpcConfigLogin.setServerURL(new URL("http", "localhost", 8069, "/xmlrpc/common"));
xmlrpcLogin.setConfig(xmlrpcConfigLogin);

Object id = xmlrpcLogin.execute("login", params1);
System.out.println("Login Id : " + id.toString());

System.out.println("------------------------");

XmlRpcClient client = new XmlRpcClient();
XmlRpcClientConfigImpl clientConfig = new XmlRpcClientConfigImpl();
clientConfig.setEnabledForExtensions(true);
clientConfig.setServerURL(new URL("http", "localhost", 8069, "/xmlrpc/object"));
client.setConfig(clientConfig);

HashMap<Object, Object> params = new HashMap<Object, Object>();

params.put("street", "Edamon3");
params.put("partner_id", "24");
params.put("city", "Punalur3");
params.put("name", "ShameerHabeeb3");

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

arg.add("openerpdb");
arg.add(1);
arg.add("admin");
arg.add("res.partner.address");
arg.add("create");
arg.add(params);

Object ret_id = client.execute("execute", arg);
System.out.println("Created new partner address with id :" + ret_id.toString());

}

}