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] \t count" + count );
                    for (int i = 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 block
            e.printStackTrace();
        }

    }
}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。