我学习如何为android使用DOm解析器,我使用示例androidHive.com的服务
"http://api.androidhive.info/pizza/?format=xml"
我使用URLCOnnection连接到一个服务器,它有一个用户名和密码连接,但它返回nullPointerException。
受保护的静态InputStream getInputStream( url ) { try{
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);
}
}
}发布于 2014-08-17 14:23:48
您的http客户端代码会在网络访问期间抛出一个excetion,并在一个捕获块中返回空值吗?原因可能是:没有可用的internet连接,AndroidManifest.xml中缺少权限,使用了错误的请求方法,或者出现了超时问题。也许调试或记录请求代码、catch块和响应实体对于查找核心问题很有用。在这文章中,使用ConnectivityManager系统服务和http连接检查internet连接的示例代码是可用的。
https://stackoverflow.com/questions/25280631
复制相似问题