2012-03-27 6 views
0

出力パラメータjava.util.Collectionとして私に返すサービスを呼び出しています。今私の質問は、私はそのオブジェクトからデータを取得できますか?私がJavaで印刷すると、[[Ljava.lang.Object;@7ff4d7c0]のようなものが得られます。私はオブジェクトを印刷しているので、これは正常です。java.util.collection return from webservice

このサービスはofbizプロジェクトのもので、正しく動作しています。私はofbizからWebサービステスターを使用するとき、私はと戻り値を取得する:

{{party=[GenericEntity:Party][partyId,10045(java.lang.String)][partyTypeId,PERSON(java.lang.String)]}, {party=[GenericEntity:Party][partyId,10119(java.lang.String)][partyTypeId,PERSON(java.lang.String)]}}` 

どのように私はJavaでこれを達成できますか?

これは私のコードです:

public static void main(String[] args) throws MalformedURLException, XmlRpcException { 


    XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); 
    config.setServerURL(new URL("http://127.0.0.1:8080/webtools/control/xmlrpc")); 
    config.setEnabledForExceptions(true); 
    config.setEnabledForExtensions(true); 

    XmlRpcClient client = new XmlRpcClient(); 
    client.setConfig(config); 

    Map paramMap = new HashMap(); 
    Map map1 = new HashMap(); 


    //Verplichte parameters 
    paramMap.put("login.username", "admin"); 
    paramMap.put("login.password", "opentaps"); 
    paramMap.put("userLoginId", "David"); 

    Object[] params = new Object[]{paramMap}; 

    Map result = (Map) client.execute("getPartyFromUserLogin", params); 
    //System.out.println(result.values()); 


    Collection parties = null; 
    parties = (Collection) result.values(); 
    System.out.println("Got parties: " + parties.size()); 
    System.out.println(parties.toString()); 


    Iterator it = parties.iterator(); 
    while(it.hasNext()){ 
     Party object = (Party)it.next(); 
     System.out.println("ok : "+ object.getPartyId()); 
    } 

} 

[OK]をので、今、私はそれを反復処理し、党オブジェクト(import org.opentaps.base.entities.Party;)にキャストしようとしています。間違ったクラスにキャスティングしているだけですか?

エラーログ:このコードを使用した後

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to org.opentaps.base.entities.Party 
    at test.xmlrpcGetPartyEmail.main(xmlrpcGetPartyEmail.java:56) 

エラーログ:

Iterator it = parties.iterator(); 
while(it.hasNext()){ 
    System.out.println("ok : "+ it.next().getClass()); 
} 

class java.util.HashMap$Values 
Got parties: 1 
[[Ljava.lang.Object;@2380bfe1] 
ok : class [Ljava.lang.Object; 

サーバーログ:

ava:777:WARN ] Running the getPartyFromUserLogin Service... 
    [java] 2012-03-27 14:47:28,861 (http-0.0.0.0-8080-1) [  PartyServices. 
ava:792:INFO ] PartyFromUserLogin number found: 2 
    [java] 2012-03-27 14:47:28,865 (http-0.0.0.0-8080-1) [  RequestHandler. 
ava:641:INFO ] Ran Event [xmlrpc:#] from [request], result is [null] 
    [java] 2012-03-27 14:47:28,866 (http-0.0.0.0-8080-1) [  ControlServlet. 
ava:328:INFO ] [[[xmlrpc] Request Done- total:0.056,since last([xmlrpc] Request 
...):0.056]] 
+0

正しいオブジェクトタイプにキャストしようとしましたか? – 02strich

+3

こんにちは、コレクションオブジェクトを印刷するだけで、コレクションを繰り返し、個々のオブジェクトの状態を表示することができます – Murugesh

+0

何をしようとしているかを示すコード例を示してください。 – nwinkler

答えて

1

はあなたが

Iterator it = parties.iterator(); 
while(it.hasNext()){ 
    System.out.println("ok : "+ it.next().getClass()); 
} 
を使用してプログラムを実行してみてくださいすることができ

と結果を投稿しますか?

+0

クラスjava.util.HashMap $値 対象団体:1 [[Ljava.lang.Object; @ 2380bfe1] ok:クラス[Ljava.lang.Object; –

+0

私の悪いです。 getClass()。getName()である必要があります。 – 02strich

+0

それは同じものを返します:クラスjava.util.HashMap $値 Got party:1 [[Ljava.lang.Object; @ 2380bfe1] ok:[Ljava.lang.Object; –

関連する問題