【问题标题】:Brows OpenERP contacts using java code使用 Java 代码浏览 OpenERP 联系人
【发布时间】:2012-06-21 11:27:17
【问题描述】:

我在运行以下用于从 openERP 浏览联系人的 java 代码时遇到问题 第一部分运行没有问题,登录部分完成,但我在线上遇到异常

Object c = client.execute("execute", arg);

说选角有问题...

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

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

public class Browse {

public static void main(String args[]) throws Exception {
// USEFUL ONLY LOCALLY WITH IN THE SERVER
Vector params1 = new Vector();
params1.addElement("TS_DB");
params1.addElement("alaa");
params1.addElement("123456");

XmlRpcClient xmlrpcLogin = new XmlRpcClient();
XmlRpcClientConfigImpl xmlrpcConfigLogin = new XmlRpcClientConfigImpl();
xmlrpcConfigLogin.setEnabledForExtensions(true);
xmlrpcConfigLogin.setServerURL(new URL("http", "10.0.0.177", 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", "10.0.0.177", 8069, "/xmlrpc/object"));
client.setConfig(clientConfig);

// Object[] params2 = { "parner_id", "name" };
Object[] params2 = { 11 };
Vector<Object> params = new Vector<Object>();
params.add(params2);
Vector<Object> arg = new Vector<Object>();
arg.add("TS_DB");
arg.add(1);
arg.add("alaa");
arg.add("res.partner.address");
arg.add("browse");
// arg.add(24);
arg.add(params2);

Object c = client.execute("execute", arg);
// System.out.println("partner addressees with partner Id 24 :");
// for (Object obj : ids) {
// int a = Integer.parseInt(obj.toString());
// System.out.println(a);
// }

}
}

我遇到了以下异常:

Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
    at org.apache.xmlrpc.parser.XmlRpcResponseParser.addResult(XmlRpcResponseParser.java:61)
    at org.apache.xmlrpc.parser.RecursiveTypeParserImpl.endValueTag(RecursiveTypeParserImpl.java:78)
    at org.apache.xmlrpc.parser.XmlRpcResponseParser.endElement(XmlRpcResponseParser.java:186)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2939)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
    at org.apache.xmlrpc.client.XmlRpcStreamTransport.readResponse(XmlRpcStreamTransport.java:186)
    at org.apache.xmlrpc.client.XmlRpcStreamTransport.sendRequest(XmlRpcStreamTransport.java:156)
    at org.apache.xmlrpc.client.XmlRpcHttpTransport.sendRequest(XmlRpcHttpTransport.java:143)
    at org.apache.xmlrpc.client.XmlRpcSunHttpTransport.sendRequest(XmlRpcSunHttpTransport.java:69)
    at org.apache.xmlrpc.client.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:56)
    at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:167)
    at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:158)
    at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:147)
    at Browse.main(Browse.java:47)

【问题讨论】:

  • 您好,您不能在服务器环境之外进行用户浏览方法,您必须使用read 方法。所以请使用 read 方法。

标签: java xml-rpc


【解决方案1】:

您必须将用户 ID 传递给 arg 向量。您通过登录数据库获得的用户 ID 必须提供给 arg 向量,以便调用特定方法。 但是是的,它必须显示除该强制转换异常之外的其他一些异常,但我不知道为什么会出现该错误。但解决方法很简单,只需替换语句:

arg.add(1);

有了这个:

arg.add(id);

上面的id设置如下:

Object id = xmlrpcLogin.execute("login", params1);

【讨论】:

    【解决方案2】:

    据我所知,xmlrpc 无法返回 openerp 的浏览方法返回的对象。 所以你必须使用相同的读取方法。

    【讨论】:

    • 读取方法 Object[] params2 = { "city", "name", "partner_id", "country_id", "email", "create_date", "write_date" 我得到了同样的异常};向量 arg = 新向量(); arg.add("openerpdb"); arg.add(1); arg.add("管理员"); arg.add("res.partner.address"); arg.add("读取"); arg.add(3); arg.add(params2); HashMap ids = (HashMap) client.execute("execute", arg);
    • 这个错误出现在读取响应或发送请求时。
    猜你喜欢
    • 1970-01-01
    • 2015-07-02
    • 2012-11-13
    • 2019-06-15
    • 2014-10-02
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 2011-03-09
    相关资源
    最近更新 更多