我正在尝试使用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();
}
感谢任何帮助
答案 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
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());
}
}