2014-08-13 2 views
0

Im наклонившись, как использовать DOM парсер для андроид колодце я использую Servivce примера androidHive.comDOMParser для андроид

«http://api.androidhive.info/pizza/?format=xml»

Im используя URLConnection для подключения к серверу, который он имеет имя пользователя и пароль для подключения, но он возвращает исключение nullPointerException.

защищенный статический InputStream getInputStream (URL URL) { попробовать {

URLConnection UrlConn = url.openConnection(); 
UrlConn.setDoInput (true); 
    UrlConn.setRequestProperty ("trust", 
      URLEncoder.encode(User,Pass); 
    UrlConn .connect(); 

    return UrlConn.getInputStream(); 



} catch (IOException e) { 
    return null; 
} catch (Exception e) { 
    return null; 
} 

вот мой код:

public static void domparser() throws Exception { 
      //Get the DOM Builder Factory 
     pizza=new ArrayList<HashMap<String,String>>(); 

     String urlN="http://api.androidhive.info/pizza/?format=xml"; 
     URL url=new URL(urlN); 
     DocumentBuilderFactory factory = 
       DocumentBuilderFactory.newInstance(); 

      //Get the DOM Builder 
      DocumentBuilder builder = factory.newDocumentBuilder(); 

      Document document = 
         builder.parse(getInputStream(url)); 
      Element root = document.getDocumentElement(); 
      NodeList nodeList = root.getElementsByTagName("menu"); 

      for (int i = 0; i < nodeList.getLength(); i++) { 

       Node node=nodeList.item(i); 
       NodeList list=node.getChildNodes(); 



       for(int x=0;list.getLength()>x;x++){ 
        //map=new HashMap<String,String>(); 
        HashMap<String,String> map=new HashMap<String,String>(); 
        Node element=list.item(x); 
        String name=element.getNodeName(); 
        if (name.equalsIgnoreCase("id")){ 
         map.put("Id",element.getFirstChild().getNodeValue().toString()); 
        } else if (name.equalsIgnoreCase("name")){ 
         map.put("name",element.getFirstChild().getNodeValue().toString()); 
        } 
        pizza.add(map); 
        } 

      } 


    } 

ответ

0

Может быть, что ваш код HTTP клиент генерирует excetion во время доступа к сети и вернул нулевое значение в один из ваших блоков catch? Причины могут заключаться в том, что подключение к Интернету не доступно, разрешения отсутствуют в AndroidManifest.xml, используется неправильный метод запроса или возникли проблемы с таймаутом. Возможно, отладка или регистрация кода запроса, блоки блокировки и объект ответа могут быть полезны для поиска основной проблемы. В файле this приведен пример кода кода для проверки подключения к Интернету с использованием системной службы ConnectivityManager и http-соединения.

Смежные вопросы