1.HttpRequest
Packagecom.joyfulmath.android4example.http;ImportJava.io.BufferedReader;ImportJava.io.InputStreamReader;ImportOrg.apache.http.HttpResponse;Importorg.apache.http.client.HttpClient;ImportOrg.apache.http.client.methods.HttpGet;Importorg.apache.http.impl.client.DefaultHttpClient;ImportCOM.JOYFULMATH.ANDROID4EXAMPLE.R;Importandroid.app.Activity;ImportAndroid.os.Bundle;ImportAndroid.os.Handler;ImportAndroid.os.Message;ImportAndroid.util.Log;ImportAndroid.view.View;ImportAndroid.view.View.OnClickListener;ImportAndroid.widget.Button;ImportAndroid.widget.TextView; Public classHttpdemoactivityextendsActivityImplementsIresult {protected Static FinalString TAG = "Httpdemo." Httpdemoactivity "; PublicHandler Mmainhandler; Public Static FinalString Requesturl = "http://www.baidu.com"; Button mbtnrequest; TextView Mresponseview; Button Mbtn_json; /** (Non-javadoc) * * @see android.app.activity#oncreate (android.os.Bundle)*/@Overrideprotected voidonCreate (Bundle savedinstancestate) {Super. OnCreate (savedinstancestate); Setcontentview (R.layout.layout_httpdemo_main); Mbtnrequest= (Button) This. Findviewbyid (R.id.btn_request); Mresponseview= (TextView) This. Findviewbyid (R.id.httpdemo_text); Mbtn_json= (Button) This. Findviewbyid (R.id.btn_json); Mbtnrequest.setonclicklistener (NewOnclicklistener () {@Override Public voidOnClick (View v) {workthread work=NewWorkthread (httpdemoactivity. This, Requesturl); Work.start (); } }); Mbtn_json.setonclicklistener (NewOnclicklistener () {@Override Public voidOnClick (View v) {jsonparser parser=NewJsonparser (); Parser.parser (); } }); Mmainhandler=NewHandler () {/** (Non-javadoc) * * @see android.os.handler#handlemessage (android.os.Message) */@Override Public voidhandlemessage (Message msg) {String str=(String) msg.obj; LOG.I (TAG,"Get" +str); Mresponseview.settext (str); } }; } /** (Non-javadoc) * * @see Android.app.activity#onstart ()*/@Overrideprotected voidOnStart () {Super. OnStart (); } /** (Non-javadoc) * * @see android.app.activity#onstop ()*/@Overrideprotected voidOnStop () {Super. OnStop (); } /** (Non-javadoc) * * @see Android.app.activity#ondestroy ()*/@Overrideprotected voidOnDestroy () {Super. OnDestroy (); } Private classWorkthreadextendsThread {Iresult mlistener; String address; String message= ""; PublicWorkthread (iresult result, String address) {Mlistener=result; This. Address =address; } /** (Non-javadoc) * * @see Java.lang.thread#run ()*/@Override Public voidrun () {log.i (TAG,"Workthread Start"); Try{HttpClient Client=Newdefaulthttpclient (); HttpGet Request=NewHttpGet (address); HttpResponse Response=Client.execute (Request); InputStreamReader Inreader=NewInputStreamReader (response. GetEntity (). getcontent ()); BufferedReader Reader=NewBufferedReader (Inreader); String Str=Reader.readline (); LOG.I (TAG,"Workthread start str:" +str); while(str!=NULL) {Message+=str; STR=Reader.readline (); } if(mlistener!=NULL) {mlistener.onresult (message); } } Catch(Exception ex) {log.i (TAG,"Workthread ex:" +ex.getmessage ()); } }} @Override Public voidOnresult (String msg) {Message message=NewMessage (); Message.what= 1; Message.obj=msg; Mmainhandler.sendmessage (message); }}
Package com.joyfulmath.android4example.http; Public Interface Iresult { void Onresult (String msg);}
JSON format parsing:
Packagecom.joyfulmath.android4example.http;ImportOrg.json.JSONArray;ImportOrg.json.JSONObject;ImportOrg.json.JSONTokener;ImportAndroid.util.Log; Public classJsonparser {Private Static FinalString JSON = "{" + "\" phone\ ": [\" 12345678\ ", \" 87654321\ "]," + "\" name\ ": \" Yuanzhi Fei89\ "," + "\" age\ ":" + "\" address\ ": {\" country\ ": \" China\ ", \" province\ ": \" jiangsu\ "}," + "\" married\ ": false" + "}"; Private Static FinalString TAG = "Httpdemo." Jsonparser "; Public voidparser () {log.i (TAG,"[Parser]"); Try{Jsontokener Jsonparser=NewJsontokener (JSON); Jsonobject Person=(Jsonobject) jsonparser.nextvalue (); Jsonarray Pbones= Person.getjsonarray ("Phone"); LOG.I (TAG,"[Parser]pbones:" +pbones.getstring (0) + "" +pbones.getstring (1)); String name= person.getstring ("name"); LOG.I (TAG,"[Parser]name:" +name); }Catch(Exception ex) {log.i (TAG,"[Parser]ex:" +ex.getmessage ()); } }}
XML parsing:
Three kinds: dom,sax,pull
Android Common Xmlpullreader:
Packagecom.joyfulmath.android4example.http;Importjava.io.IOException;ImportOrg.xmlpull.v1.XmlPullParser;Importorg.xmlpull.v1.XmlPullParserException;ImportCOM.JOYFULMATH.ANDROID4EXAMPLE.R;Importandroid.content.res.Resources;ImportAndroid.content.res.XmlResourceParser;ImportAndroid.util.Log; Public classXmlparser {Private Static FinalString TAG = "Httpdemo." Xmlparser "; // Pull /*Xmlpullparser does not care about the structural attributes of XML, it is the start, end, property, value. * * */ Public voidPullxml (Resources res) {log.i (TAG,"[Pullxml]"); Xmlresourceparser Parser= Res.getxml (R.layout.layout_httpdemo_main);//Xmlpullparser intEventType; Try{EventType=Parser.geteventtype (); while(EventType! =xmlpullparser.end_document) { if(EventType = =xmlpullparser.start_document) {log.i (TAG,"[Pullxml] start_document"); } Else if(EventType = =Xmlpullparser.start_tag) {log.i (TAG,"[Pullxml] Start_tag:" +parser.getname ()); intCount =Parser.getattributecount (); LOG.I (TAG,"[Pullxml] \ t count" +count); for(inti = 0; I < count; i++) {String notename=Parser.getattributename (i); LOG.I (TAG,"[Pullxml] \ t notename:" + Notename + "at" +i); if(Notename.equals ("id") | | Notename.equals ("Text") ) {String value=Parser.getattributevalue (i); LOG.I (TAG,"[Pullxml]\t notevalue:" + value + "at" +i); } } } Else if(EventType = =Xmlpullparser.end_tag) {log.i (TAG,"[Pullxml] End_tag:" +parser.getname ()); } Else if(EventType = =xmlpullparser.text) {log.i (TAG,"[Pullxml] TEXT:" +Parser.gettext ()); } EventType=Parser.next (); } log.i (TAG,"[Pullxml] end_document"); } Catch(Xmlpullparserexception |IOException E) { //TODO auto-generated Catch blockE.printstacktrace (); } }}
Service of Android four components (cont. 2)