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

浙公网安备 33010602011771号