Android http和xml解析

转自 http://www.cnblogs.com/lm3515/archive/2011/03/30/2000335.html

窗体一

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package  Http.View;
 
import  java.io.IOException;
import  java.io.StringReader;
import  java.util.ArrayList;
import  java.util.Iterator;
import  java.util.List;
 
import  javax.xml.parsers.SAXParserFactory;
 
import  mars.modle.Mp3Info;
 
import  org.apache.http.HttpEntity;
import  org.apache.http.HttpResponse;
import  org.apache.http.HttpStatus;
import  org.apache.http.NameValuePair;
import  org.apache.http.client.ClientProtocolException;
import  org.apache.http.client.HttpClient;
import  org.apache.http.client.entity.UrlEncodedFormEntity;
import  org.apache.http.client.methods.HttpPost;
import  org.apache.http.impl.client.DefaultHttpClient;
import  org.apache.http.message.BasicNameValuePair;
import  org.apache.http.util.EntityUtils;
import  org.xml.sax.InputSource;
import  org.xml.sax.XMLReader;
 
import  android.app.Activity;
import  android.content.Intent;
import  android.os.Bundle;
import  android.view.View;
import  android.widget.Button;
import  android.widget.TextView;
 
public  class  Post extends  Activity {
  TextView mTextView = null ;
  @Override
  protected  void  onCreate(Bundle savedInstanceState)
  {
   // TODO Auto-generated method stub
   super .onCreate(savedInstanceState);
   setContentView(R.layout.post);
      mTextView = (TextView) this .findViewById(R.id.my);
         //http地址
         String httpUrl = "http://wap.51tes.com/i.asmx/c" ;
         //获得的数据
         HttpPost httpRequest = new  HttpPost(httpUrl);
         //使用NameValuePair来保存要传递的Post数据
         List<NameValuePair> params = new  ArrayList<NameValuePair>();
         //添加需要的参数
         params.add( new  BasicNameValuePair( "c1" , "wm" ));
         params.add( new  BasicNameValuePair( "c2" , "240*320" ));
         params.add( new  BasicNameValuePair( "c3" , "1.0" ));
         params.add( new  BasicNameValuePair( "c4" , "6365T" ));
         try
         {
          //设置字符集
          HttpEntity httpentity = new  UrlEncodedFormEntity(params, "utf8" );
          //请求HttpRequest
          httpRequest.setEntity(httpentity);
          //取得默认的HttpClient
          HttpClient httpclient = new  DefaultHttpClient();
          //取得HttpResponse
          HttpResponse httpResponse = httpclient.execute(httpRequest);
          //请求成功
          if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
          {
           //取得返回的字符串
           String strResult = EntityUtils.toString(httpResponse.getEntity());
           mTextView.setText(strResult);
           parse(strResult);
          }
          else
          {
           mTextView.setText( "请求错误" );
          }
         }
         catch (ClientProtocolException e)
         {
          mTextView.setText(e.getMessage().toString());
         }
      catch (IOException e)
      {
       mTextView.setText(e.getMessage().toString());
      }
      catch (Exception e)
      {
       mTextView.setText(e.getMessage().toString());
      }
   //设置按键事件监听
         Button button_Back = (Button)findViewById(R.id.Button_Back_POST);
         /*监听Button的时间信息*/
         button_Back.setOnClickListener( new  Button.OnClickListener()
         {
          public  void  onClick(View v)
          {
           /*新建一个Intent对象*/
           Intent intent = new  Intent();
           /*指定intent要启动的类*/
           intent.setClass(Post. this , Http. class );
           /*启动一个新的Activity*/
           startActivity(intent);
           /*关闭当前的Activity*/
           Post. this .finish();
          }
         });
  }
   private  List<Mp3Info> parse(String xmlStr)
   {
       SAXParserFactory  saxParserFactory = SAXParserFactory.newInstance();
       List<Mp3Info> infos = new  ArrayList<Mp3Info>();
       try
       {
    XMLReader xmlReader = saxParserFactory.newSAXParser().getXMLReader();
    MyContentHandler mp3ListContentHandler = new  MyContentHandler(infos);
    xmlReader.setContentHandler(mp3ListContentHandler);
    xmlReader.parse( new  InputSource( new  StringReader(xmlStr)));
    for (Iterator<Mp3Info> iterator = infos.iterator();iterator.hasNext();)
    {
     Mp3Info mp3Info = iterator.next();
     System.out.println(mp3Info);
    }
       }
       catch (Exception e)
   {
    e.printStackTrace();
   }
   return  infos;
   }
}

窗体2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package  Http.View;
 
import  java.util.List;
 
import  mars.modle.Mp3Info;
 
import  org.xml.sax.Attributes;
import  org.xml.sax.SAXException;
import  org.xml.sax.helpers.DefaultHandler;
 
public  class  MyContentHandler extends  DefaultHandler
{
  private  List<Mp3Info> infos = null ;
  public  MyContentHandler(List<Mp3Info> infos)
  {
   super ();
   this .infos = infos;
  }
  public  List<Mp3Info> getInfos()
  {
   return  infos;
  }
  public  void  setInfos(List<Mp3Info> infos)
  {
   this .infos = infos;
  }
  private  Mp3Info mp3Info = null ;
  private  String tagName;
     public  void  startDocument() throws  SAXException
     {
      
     }
     public  void  endDocument() throws  SAXException
     {
      
     }
     public  void  startElement(String nameSpaceURI,String localName, String qName, Attributes attr) throws  SAXException
     {
      this .tagName = localName;
   if (localName.equals( "E" ))
   {
    mp3Info = new  Mp3Info();
   }
     }
     public  void  endElement(String nameSpaceURI,String localName, String qName, Attributes attr) throws  SAXException
     {
   if (qName.equals( "E" ))
   {
    infos.add(mp3Info);
   }
      tagName = null ;
     }
     public  void  characters ( char [] ch, int  start, int  length) throws  SAXException
     {
      String temp = new  String (ch, start, length);
      if (tagName.equals( "E1" ))
      {
       mp3Info.setE1(temp);
      }
      else  if (tagName.equals( "E2" ))
      {
       mp3Info.setE2(temp);
      }
      else  if (tagName.equals( "E3" ))
      {
       mp3Info.setE3(temp);
      }
      else  if (tagName.equals( "E4" ))
      {
       mp3Info.setE4(temp);
      }
      else  if (tagName.equals( "E5" ))
      {
       mp3Info.setE5(temp);
      }
     }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值