1.雅虎天气预报:
String url2 = "http://sugg.us.search.yahoo.net/gossip-gl-location/?appid=weather&output=xml&command=%E5%8C%97%E4%BA%AC";
2.获取String类型的xml数据:
public static String getStringByUrl(String url) {
String outputString = "";
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(url);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
try {
outputString = httpclient.execute(httpget, responseHandler);
} catch (Exception e) {
GlobalConstant.i("http连接失败---->" + e);
e.printStackTrace();
}
httpclient.getConnectionManager().shutdown();
return outputString;
}
3.进行pull解析
public static WeatherBean getWeather(String url) {
try {
WeatherBean bean;
// 定义工厂 XmlPullParserFactory
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
// 定义解析器 XmlPullParser
XmlPullParser parser = factory.newPullParser();
parser.setInput(new StringReader(url));
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
GlobalConstant.i("--->>>" + eventType);
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.START_TAG:// 截取节点信息
String strTag = parser.getName();
// GlobalConstant.i("strTag-->" + strTag);
if (strTag.equals("s")) {
GlobalConstant.i("k-->" + parser.getAttributeValue(0));
GlobalConstant.i("d-->" + parser.getAttributeValue(0));
}
break;
case XmlPullParser.END_DOCUMENT:
break;
case XmlPullParser.END_TAG:
break;
default:
break;
}
// 别忘了用next方法处理下一个事件,忘了的结果就成死循环#_#
eventType = parser.next();
}
} catch (Exception e) {
GlobalConstant.i("pull parese exception-->" + e);
e.printStackTrace();
}
return null;
}
4.Android4.0以上不能在主线程直接访问网络,使用新开线程执行:
NetAsync task = new NetAsync((TextView) findViewById(R.id.tv_show));
task.execute(url2);
class NetAsync extends AsyncTask<String, Integer, String> {
TextView tvShow;
/**
* 构造方法
*/
public NetAsync(TextView tvShow) {
this.tvShow = tvShow;
}
@Override
protected String doInBackground(String... params) {
String xml = HttpUtils.getStringByUrl(params[0]);
// GlobalConstant.i("--->>>>>>" + xml);
//开始pull解析
SPullParese.getWeather(xml);
return xml;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
tvShow.setText(result);
}
}