Android http和xml解析

窗体一

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

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);
     }
    }
}

 

posted @ 2011-03-30 21:59  子非あ鱼  阅读(3835)  评论(0编辑  收藏  举报