0

XMLPRC と Java を使用して顧客の詳細を OpenERP サーバーに挿入しようとしています。認証を行うことができます。しかし、パラメーターを渡してレコードを挿入するために execute メソッドを呼び出すと、スレッド "main" java.lang.NullPointerException 行 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();
        }

どんな助けでも大歓迎です

4

3 に答える 3

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」を使用する必要がある可能性があります。

両方を確認すると、解決策が得られます。

于 2012-06-20T05:26:36.083 に答える
0

その実行に送信する必要があるパラメーターを知ってみてください。パラメータの不一致が原因で、このエラーが発生しています。

1送信されているものが実際に整数または文字列を期待していることを確認しますか?期待されるパラメータのタイプを確認したら、この例外を取り除くことができます。

于 2012-06-20T04:48:44.090 に答える
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 と 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());

}

}

于 2012-06-20T06:52:24.333 に答える