2012-06-21 63 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);