zoukankan      html  css  js  c++  java
  • Android四大组件之Service(续2)

    1.HttpRequest

    package com.joyfulmath.android4example.http;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    
    import org.apache.http.HttpResponse;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.DefaultHttpClient;
    
    import com.joyfulmath.android4example.R;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    
    public class HttpDemoActivity extends Activity implements IResult {
    
        protected static final String TAG = "httpdemo.HttpDemoActivity";
        public Handler mMainHandler;
        public static final String RequestUrl = "http://www.baidu.com";
        Button mBtnRequest;
        TextView mResponseView;
        Button mbtn_json;
        /*
         * (non-Javadoc)
         * 
         * @see android.app.Activity#onCreate(android.os.Bundle)
         */
        @Override
        protected void onCreate(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(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    WorkThread work = new WorkThread(HttpDemoActivity.this,
                            RequestUrl);
                    work.start();
                }
            });
            
            mbtn_json.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    
                    JSonParser parser = new JSonParser();
                    parser.parser();
                }
            });
            
            
            mMainHandler = new Handler() {
    
                /*
                 * (non-Javadoc)
                 * 
                 * @see android.os.Handler#handleMessage(android.os.Message)
                 */
                @Override
                public void handleMessage(Message msg) {
                    String str = (String) msg.obj;
                    Log.i(TAG, "get " + str);
                    mResponseView.setText(str);
                }
    
            };
        }
    
        /*
         * (non-Javadoc)
         * 
         * @see android.app.Activity#onStart()
         */
        @Override
        protected void onStart() {
            super.onStart();
        }
    
        /*
         * (non-Javadoc)
         * 
         * @see android.app.Activity#onStop()
         */
        @Override
        protected void onStop() {
            super.onStop();
        }
    
        /*
         * (non-Javadoc)
         * 
         * @see android.app.Activity#onDestroy()
         */
        @Override
        protected void onDestroy() {
            super.onDestroy();
        }
    
        private class WorkThread extends Thread {
    
            IResult mListener;
            String address;
            String message = "";
            public WorkThread(IResult result, String address) {
                mListener = result;
                this.address = address;
            }
    
            /*
             * (non-Javadoc)
             * 
             * @see java.lang.Thread#run()
             */
            @Override
            public void run() {
                Log.i(TAG, "WorkThread start");
                try {
                    HttpClient client = new DefaultHttpClient();
                    HttpGet request = new HttpGet(address);
                    HttpResponse response = client.execute(request);
                    InputStreamReader inreader = new InputStreamReader(response
                            .getEntity().getContent());
                    BufferedReader reader = new BufferedReader(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 void onResult(String msg) {
            Message message = new Message();
            message.what = 1;
            message.obj = msg;
            mMainHandler.sendMessage(message);
        }
    }
    package com.joyfulmath.android4example.http;
    
    public interface IResult {
        void onResult(String msg);
    }

    json格式解析:

    package com.joyfulmath.android4example.http;
    
    import org.json.JSONArray;
    import org.json.JSONObject;
    import org.json.JSONTokener;
    
    import android.util.Log;
    
    public class JSonParser {
        private static final String JSON =
                "{" +
                " "phone" : ["12345678", "87654321"]," +
                " "name" : "yuanzhifei89"," +
                " "age" : 100," +
                " "address" : { "country" : "china", "province" : "jiangsu" }," +
                " "married" : false" +
                "}";
        private static final String TAG = "httpdemo.JSonParser"; 
        
        public void parser()
        {
            Log.i(TAG, "[parser]");
            try{
                JSONTokener jsonparser = new JSONTokener(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解析:

    三种:DOM,SAX,PULL

    android 常用的xmlpullreader:

    package com.joyfulmath.android4example.http;
    
    import java.io.IOException;
    
    import org.xmlpull.v1.XmlPullParser;
    import org.xmlpull.v1.XmlPullParserException;
    
    import com.joyfulmath.android4example.R;
    
    import android.content.res.Resources;
    import android.content.res.XmlResourceParser;
    import android.util.Log;
    
    public class XmlParser {
    
        private static final String TAG = "httpdemo.XmlParser";
    
        // pull
        /*xmlpullparser 不关心xml的结构属性,它就是开始,结束,属性,value。
         * 
         * */
        public void pullXml(Resources res) {
            Log.i(TAG, "[pullXml]");
            XmlResourceParser parser = res.getXml(R.layout.layout_httpdemo_main);// xmlpullparser
            int eventType;
            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());
                        int count = parser.getAttributeCount();
                        Log.i(TAG, "[pullXml] 	 count" + count );
                        for (int i = 0; i < count; i++) {
                            String noteName = parser.getAttributeName(i);
                            Log.i(TAG, "[pullXml] 	 noteName:" + noteName + " at " + i);
                            if(noteName.equals("id")||noteName.equals("text"))
                            {
                                String value = parser.getAttributeValue(i);
                                Log.i(TAG, "[pullXml]	    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 block
                e.printStackTrace();
            }
    
        }
    }
  • 相关阅读:
    php类和对象: 类常量
    类和对象:静态属性、静态方法
    类和对象: 构造方法
    类和对象:成员属性、成员方法 — 学习笔记3
    类和对象:创建对象
    类和对象:类与对象定义
    可扩展定制可复用的倒计时插件
    SeaJS入门
    JS可复用的多条件筛选插件
    谁说转载的文章用户就不喜欢了?
  • 原文地址:https://www.cnblogs.com/deman/p/4236744.html
Copyright © 2011-2022 走看看