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