XML解析使用Java没有得到任何回应
正试图从URL中获取XML文件,但没有得到响应,并且代码稍后停止,因为字符串xml为null,你能告诉我最新的问题吗?XML解析使用Java没有得到任何回应
public String getXmlFromUrl(String url) {
String xml = null;
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
// I printed the response here but I got nothing !
HttpEntity httpEntity = httpResponse.getEntity();
xml = EntityUtils.toString(httpEntity);
return xml;
} catch (Exception e) {
e.printStackTrace();
}
请具体说明在你的答案我感谢你的帮助
为什么你正在使用HTTPPost?你甚至没有发送任何数据。尝试使用HttpGet。
试试这个:
public String getXmlFromUrl(String url) throws Exception {
return new AsyncTask<String, Void, String>() {
@Override
protected String doInBackground(String... params) {
String xml = null;
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpPost = new HttpGet(params[0]);
HttpResponse httpResponse = httpClient.execute(httpPost);
// I printed the response here but I got nothing !
HttpEntity httpEntity = httpResponse.getEntity();
xml = EntityUtils.toString(httpEntity);
Log.i("DEMO", xml);
} catch (Exception e) {
e.printStackTrace();
}
return xml;
}
}.execute(url).get();
}
但这个“Document doc = parser.getDomElement(xml); //获取DOM元素”不再工作 –
这是一件有趣的事情,创建一个asynctask并用相同的方法等待答案。我不明白你为什么要那样做? – njzk2
我刚刚纠正了他的答案... –
尝试例如启动从单独的线程代码
new Thread(new Runnable()
{
@Override
public void run()
{
// TODO your code here
}
}).start();
试试这个:
try {
items = new ArrayList<String>();
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new InputStreamReader(
getUrlData(" url")));
while (xpp.getEventType() != XmlPullParser.END_DOCUMENT) {
Log.i(TAG, "doc started");
if (xpp.getEventType() == XmlPullParser.START_TAG) {
if (xpp.getName().equals("entry")) {
items.add(xpp.getAttributeValue(0));
}
}
xpp.next();
}
} catch (Throwable t) {
Toast.makeText(this, "Request failed: " + t.toString(),
Toast.LENGTH_LONG).show();
}
为geturldata()
public InputStream getUrlData(String url) throws URISyntaxException,
ClientProtocolException, IOException {
DefaultHttpClient client = new DefaultHttpClient();
HttpGet method = new HttpGet(new URI(url));
HttpResponse res = client.execute(method);
return res.getEntity().getContent();
}
你应该明白例外。 xml的原因是null
是因为'某些事情'出了问题。这扔了一个Exception
,可能很好地描述了哪里出了问题。当发生这种情况时,Exception
被抛出,直到有人处理它。
Exception
的每个子类都有不同的“风味”,并在特定情况下抛出。这使您能够对错误做出“反应”。例如,您可以告诉用户出了什么问题,或者为了调试而记录某些内容。
就你而言,你在一个地方“捕捉”所有异常,当发生异常时,执行catch (Exception e)
之后的代码。你在这里什么都不做,只是打印出一些东西(这在LogCat中会显示为橙色)。然后你继续,好像什么都没发生。但是xml将为null,这对您的程序不利,而且您显然没有注意到LogCat项,因为您的程序在稍后崩溃。
这一次,Eldhose M Babu解决了您的问题。下一次,当其他事情出错(并且很多可能在htttp请求中出错)时,您的程序将显示相同的行为。尝试阅读例外情况,并在处理它们过于沉默时小心。
我处理了每个例外dw thx for ur help –
您是否在浏览器中检查了URL,如果它返回一些数据? –
您是否尝试打印'xml'? xml = EntityUtils.toString(httpEntity); – rahul
@DmytroDanylyk是的,我做了,它的工作正常 –