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. js获取IE版本,while代码很特别

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  2. 成都Uber优步司机奖励政策(4月11日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  3. 【LG3243】[HNOI2015]菜肴制作

    题面 洛谷 题解 首先我们有个非常显然的思路, 就是直接拓扑排序,用小根堆代替队列再按顺序输出,但是很显然是错的, 因为这只保证了字典序最小,而无法保证答案最优,\(<2,4>,<3 ...

  4. 「Leetcode」13. Roman to Integer(Java)

    分析 把具体的情况一个一个实现即可,没有什么幺蛾子. 代码 class Solution { public int romanToInt(String s) { int ans = 0; for (i ...

  5. Qt-QML-Canvas-雷达扫描仪表简单

    使用QML实现的雷达仪表的实现,主要实现了余晖扫描的实现,其他的还是比较简单的,后面可能会加入目标标识,目前的功能仅仅是一个假的扫描雷达 来看代码 /* 作者:张建伟 时间:2018年4月27日 简述 ...

  6. Android 自动化测试及性能数据采集的 Python 脚本

    文主要介绍一个基于 uiautomator2 封装的一个 Python 库 android-catcher ,该库的功能主要有对 Android 设备进行 UI 自动化测试 和 采集手机性能数据 ,适 ...

  7. 使用Python的Requests库进行web接口测试

    1.Requests简介Requests 是使用 Apache2 Licensed 许可证的 HTTP 库.用 Python 编写,真正的为人类着想. Python 标准库中的 urllib2 模块提 ...

  8. Linux大全

    Linux 基本指令介紹   一定要先學會的指令:ls, more, cd, pwd, rpm, ifconfig, find 登入與登出(開機與關機):telnet, login, exit, sh ...

  9. String中intern()方法

    intren方法:通俗的讲,是将字符串放入常量池中. new出来的字符串是放在堆中,直接赋值的字符串是放在常量池中的. 对字符串做拼接操作,即做“+”运算,分两种情况 (1)表达式右边是纯字符串常量, ...

  10. 阿里巴巴将在美国推出电子商务网站11 Main

    新浪科技讯 北京时间2月11日晚间消息,阿里巴巴集团周二向路透社证实,阿里巴巴将通过旗下子公司Vendio和Auctiva在美国推出一个电子商务网站. 该网站的名称为“11 Main”(11main. ...