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

Android四大组件之Service(续2)的更多相关文章

  1. Android四大组件之Service(续)

    本地服务启动和通过广播的方式回调是非常简单的. 下面介绍远程服务和通过远程回调的方式通知activity的方式. 1.service定义: package com.joyfulmath.globals ...

  2. Android四大组件之Service

    Android四大组件之Service Android支持服务的概念,服务是在后台运行的组件,没有用户界面,Android服务可用有与活动独立的生命周期.Android支持两种类型的服务: 本地服务: ...

  3. 【Android开发日记】之入门篇(五)——Android四大组件之Service

    这几天忙着驾校考试,连电脑都碰不到了,今天总算告一段落了~~Service作为Android的服务组件,默默地在后台为整个程序服务,辅助应用与系统中的其他组件或系统服务进行沟通.它跟Activity的 ...

  4. Android成长日记-Android四大组件之Service组件的学习

    1.什么是Service? Service是Android四大组件中与Activity最相似的组件,它们都代表可执行的程序,Service与Activity的区别在于:Service一直在后台运行,它 ...

  5. Android 四大组件之service与Broadcast

    Android 四大组件之一:service: Service有五个生命周期:onCreat,onStartCommand, onBind,onUnbind, onDestroy 主要有绑定和非绑定两 ...

  6. Android四大组件之一Service介绍-android学习之旅(十二)

    基本概念: service是android四大组件之一,运行在后台执行耗时操作,并不提供用户界面.其他组件如acticity可以通过startService启动该组件,也可以通过bindService ...

  7. Android四大组件之一 -- Service详解

    相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的Android程序员如果连Service都没听说过的话,那确实也太逊了.Service作为Android四大组件之一,在每一个应用程序 ...

  8. Android四大组件:Service

    前言 Service作为Android四大组件之一,应用非常广泛 本文将介绍对Service进行全面介绍(基础认识.生命周期.使用和应用场景) 目录 目录 1. 基础知识 定义:服务,属于Androi ...

  9. Android四大组件之Service浅见

    Service 是Android四大组件之一,可以在不显示界面的情况下在后台运行.还有一个作用是通过AIDL来实现进程间通信. Service的启动方式 Service的启动方式有两种,startSe ...

随机推荐

  1. Java——基于java自身包实现消息系统间的通信(TCP/IP+BIO)

    最近看到阿里的一位童鞋写的一本关于分布式的书,感觉不错,准备把这本书上基础的代码都写一写. /** * Created by LiuHuiChao on 2016/11/15. * descripti ...

  2. JS的发布订阅模式

    JS的发布订阅模式 这里要说明一下什么是发布-订阅模式 发布-订阅模式里面包含了三个模块,发布者,订阅者和处理中心.这里处理中心相当于报刊办事大厅.发布者相当与某个杂志负责人,他来中心这注册一个的杂志 ...

  3. Yii 2.0 使用片段缓存

    网站首页footer中的菜单标题是从数据库读取并显示处理的. 也就是 <footer>标题里面是foreach.这样每个人打开网站就查询遍历效率会很低. <footer class= ...

  4. SSM-CRUD实战

    前端最容易出现缓存问题,所以以后每次都必须完全在idea加载完后,再在浏览器端多 执行 ctrl+F5 索要最新copy 这样就能拿到最新的改动了,就不会出现各种代码没问题但是功能就是实现不了的问题 ...

  5. 车牌,车架号,VIN码毫秒识别技术,汽车后市场的春天到来了

    vin码(车架号)识别运用 不仅在制造.销售.保养.保险.车辆评估.交易环节会需要录入汽车的VIN码,在交通事故处理中,作为汽车身份唯一识别码,VIN码是处理事故的执法人员必须要记录的信息之一.随着汽 ...

  6. Jmeter接口测试(四)传递参数

    参数设置 Jmeter 支持通过 查询字符串参数(Query String Parameters) 或者 Request body 请求体来传递参数. 1.get请求是普通键值对 get请求一般通过p ...

  7. Siki_Unity_2-3_UGUI_Unity4.6 UI Beta版本入门学习(未学)

    Unity 2-3 UGUI Unity4.6 UI Beta版本入门学习(未学)

  8. Siki_Unity_2-2_NGUI_UI插件学习(3.6.8版本)(未学)

    Unity 2-2 NGUI UI插件学习(3.6.8版本)(未学)

  9. Linux内核学习笔记(3)-- 进程的创建和终结

    一. 进程创建: Unix 下的进程创建很特别,与许多其他操作系统不同,它分两步操作来创建和执行进程: fork() 和 exec() .首先,fork() 通过拷贝当前进程创建一个子进程:然后,ex ...

  10. Summarize to the Power of Two(map+思维)

    A sequence a1,a2,…,ana1,a2,…,an is called good if, for each element aiai, there exists an element aj ...