我试图解析我从HttpPost到一个服务器(last.fm)的一个last.fm
android应用程序的
XML HttpResponse.如果我只是解析它到字符串我可以看到它是一个正常的xml字符串,所有所需的信息.但我只是不能解析单个NameValuePairs.这是我的HttpResponse对象:
HttpResponse response = client.execute(post);
HttpEntity r_entity = response.getEntity();
我尝试了两个不同的东西,而不是他们的工作.首先我尝试检索NameValuePairs:
List answer = URLEncodedUtils.parse(r_entity);
String name = "empty";
String playcount = "empty";
for (int i = 0; i < answer.size(); i++){
if (answer.get(i).getName().equals("name")){
name = answer.get(i).getValue();
} else if (answer.get(i).getName().equals("playcount")){
playcount = answer.get(i).getValue();
}
}
在此代码之后,名称和播放计数仍保持“空”.所以我试图使用XML解析器:
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document answer = db.parse(new DataInputStream(r_entity.getContent()));
NodeList nl = answer.getElementsByTagName("playcount");
String playcount = "empty";
for (int i = 0; i < nl.getLength(); i++) {
Node n = nl.item(i);
Node fc = n.getFirstChild();
playcount Url = fc.getNodeValue();
}
这似乎失败得太早了,因为它甚至没有设置playcount变量.但是就像我说的,如果我这样做:
EntityUtils.toString(r_entity);
我会得到一个完美的xml字符串.因此,HttpResponse包含正确的信息应该没有问题.我究竟做错了什么?