Использовать HashMap в результате XMLRPC - PullRequest
0 голосов
/ 19 февраля 2011

Я новичок в разработке для Android, и я пытаюсь получить HashMap в RESULT, используя XMLRPC, но каждый раз, когда происходит сбой приложения, это мой код, пожалуйста, советуйте мне:

  Object RESULT =  XMLRPCClient.callEx(methodname,new Object[] {params});
         Map FRESULT= (Map) RESULT; 

Ответы [ 2 ]

2 голосов
/ 25 ноября 2011

Я также имел дело с этим и сумел получить значения следующим образом:

try {
    Object[] answer = (Object[]) client.call("call", sessionId, method, params);
    HashMap map = (HashMap) answer[0]; // get first item of the response because in my case the response was an array of Objects with one item in it holding the HashMap
    Object[] records = (Object[]) map.get("records"); // I only needed values from "records" key
    for (int i = 0; i < records.length; i++) {
        HashMap record = (HashMap) records[i]; // create another map from the records values, in my case uid's of categories
        Category cat = new Category(); // creating new instance of my Category class
        cat.setCatUid((String) record.get("uid")); // calling a method of the Category class to set Uid to the value from record HashMap
        m_categories.add(cat); // this adds it to my ArrayList<Category>
    }
} catch (XMLRPCException e) {
    Log.e(method, "Exception", e);
}

Я уверен, что это беспорядок, я сам нуб на Java, но у меня все получилось. Надеюсь, это поможет:)

0 голосов
/ 20 февраля 2011

Теперь приложение передает это мирно после реализации:

 Object RESULT = XmlRpcConnect.ServerCall_a(method,new Object[] {params});
          Map<String, Object> FRESULT= (HashMap<String, Object>) RESULT;

с некоторыми изменениями в моем классе XmlRpcConnect:

@SuppressWarnings("unchecked");
public static Object ServerCall_a(String method, Object[] params){
            XMLRPCClient client = new XMLRPCClient(server);
            HashMap<String, Object> result=null;
                  try{
            result = (HashMap<String, Object>) client.callEx(method, params);
                                                }
                  catch(XMLRPCFault f){
                      //   result = ("Fault message: " + f.getMessage());
                                                                }
                  catch(XMLRPCException e){
                      // result = ("Exception message: " + e.getMessage());
                                                                }
                       return result;
                                }

, но при попытке извлечь значения снова происходит сбой, любойсовет:

              if (FRESULT.get("status") == null) {
                          result = (String) FRESULT.get("status");
                          toastDialog(result);
               }
...