网络请求xml数据,并用pull方式解析

来源:互联网 发布:日本千叶大学知乎 编辑:程序博客网 时间:2024/06/01 13:59
/** * httpUrlConnect请求数据 */private void getData() {try {//得到URL对象,并设置访问地址URL url=new URL("http://www.baidu.com/");//得到HttpURLConnection对象HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();//设置连接超时httpURLConnection.setConnectTimeout(5000);//设置请求方式 get/posthttpURLConnection.setRequestMethod("POST");//读取超时httpURLConnection.setReadTimeout(5000);//正式联网httpURLConnection.connect();//获得状态码int code =httpURLConnection.getResponseCode();if(code==200){System.out.println("联网请求成功");//获取包含数据的输入流InputStream inputStream = httpURLConnection.getInputStream();BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));//记录每一行读取的数据String data;//拼接字符串StringBuffer stringBuffer=new StringBuffer();while ((data=bufferedReader.readLine())!=null) {stringBuffer.append(data);}/*System.out.println(stringBuffer.toString());textView.setText(stringBuffer.toString());*/Message msg = Message.obtain();msg.obj=stringBuffer.toString();handler.sendMessage(msg);}else{System.out.println("联网失败");}} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}<pre name="code" class="java">private List<News> xmlParse(InputStream is) {          List<News> newslist = null;          News news = null;          XmlPullParser parser = Xml.newPullParser();          try {              parser.setInput(is, "UTF-8");                int eventType = parser.getEventType();// 产生第一个事件              while (eventType != XmlPullParser.END_DOCUMENT) {// 只要不是文档结束事件                  switch (eventType) {                  case XmlPullParser.START_DOCUMENT:                      newslist = new ArrayList<News>();                      break;                    case XmlPullParser.START_TAG:                      String name = parser.getName();// 获取解析器当前指向的元素的名称                      if ("news".equals(name)) {                          news = new News();                        }                      if (news != null) {                          if ("title".equals(name)) {                              news.setTitle(parser.nextText());// 获取解析器当前指向元素的下一个文本节点的值                          }                          if ("body".equals(name)) {                              news.setBody(parser.nextText());                          }                      }                      break;                  case XmlPullParser.END_TAG:                      if ("news".equals(parser.getName())) {                          newslist.add(news);                          news = null;                      }                      break;                  }                  eventType = parser.next();              }          } catch (XmlPullParserException e) {              // TODO Auto-generated catch block              e.printStackTrace();          } catch (IOException e) {              // TODO Auto-generated catch block              e.printStackTrace();          }          return newslist;      } 



0 0
原创粉丝点击