我在运行以下java代码时遇到问题,无法从openERP浏览联系人 第一部分运行没有问题,登录部分完成,但我在行
上有例外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)
答案 0 :(得分:2)
您必须将用户ID传递给arg矢量。通过登录数据库获得的用户ID必须提供给arg向量,以便调用特定方法。 但是,它必须显示除了强制转换异常之外的其他一些异常,但我不知道为什么会出现错误。但解决方案很简单,只需替换语句:
arg.add(1);
有了这个:
arg.add(id);
上面的id
设置如下:
Object id = xmlrpcLogin.execute("login", params1);
答案 1 :(得分:0)
据我所知xmlrpc无法返回openerp返回的浏览方法的对象。 所以你必须使用read方法。