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

     }

    }

}



 



你可能感兴趣的:(android)