2012-06-21 67 views
0

我跑从OpenERP的 浏览联系人与出题的第一部分运行下面的Java代码中的问题眉毛的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) 
+0

你好,你可以不是用户浏览方法在服务器环境的外面,你必须使用'read'方法。所以请使用读取方法。 –

回答

0

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

+0

好的,谢谢回复 – user1471739

+0

我得到了同样的例外,读取方法的代码如下: – user1471739

+0

我得到了同样的例外,用于读取方法Object [] params2 = {“city”,“name”,“partner_id”,“country_id “,”email“,”create_date“, \t \t”write_date“}; \t \t Vector arg = new Vector (); \t \t arg.add(“openerpdb”); \t \t arg.add(1); \t \t arg.add(“admin”); \t \t arg.add(“res.partner.address”); \t \t arg.add(“read”); \t \t arg.add(3); \t \t arg.add(params2); HashMap ids =(HashMap)client.execute(“execute”,arg); – user1471739

2

您必须将用户标识传递给arg向量。通过登录到数据库中的用户标识必须提供给arg向量才能调用特定的方法。 但是是的,它必须显示一些其他的异常,除了这种抛出异常,但我不知道为什么会出现这种错误。但解决的办法很简单只需更换声明:

arg.add(1); 

有了这一个:

arg.add(id); 

id上述规定如下:

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