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. [BZOJ4383][POI2015] Pustynia-[线段树+dp+拓扑排序]

    Description 给定一个长度为n的正整数序列a,每个数都在1到10^9范围内,告诉你其中s个数,并给出m条信息,每条信息包含三个数l,r,k以及接下来k个正整数,表示a[l],a[l+1],. ...

  2. day 11 名片管理系统

    1 思路 #名片1 名片2 {"name":"alex","age":18,"QQ":12123} {"nam ...

  3. Android:反编译apk

    一.所需工具 1. apktool (1)作用:获取资源文件,例如图片.布局文件 (2)下载地址:https://bitbucket.org/iBotPeaches/apktool/downloads ...

  4. 利用工厂模式实现serviec层和dao层解耦

    利用工厂模式实现serveice和dao层的解耦,这样就可以不用在service层实例化dao层的对象,当dao层代码发生改变的时候(数据库实现发生改变)直接修改配置文件就不用改变service层的代 ...

  5. 【Jmeter测试】BeanShell介绍和使用

      BeanShell是什么? BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; BeanShell是一种松散类型的脚本语言: BeanShell是用Jav ...

  6. Unity标准材质官方教程合集

  7. tomcat配置https | 自签发证书配置

    未配置证书的访问:

  8. VS默认的类前缀(访问控制符)是internal

    VS默认的类前缀(访问控制符)是internal 大家都知道VS默认新建的class的时候,class前面是什么都没有的,按照规则,这个class的可见性是internal,但是说实话,很多人包括我在 ...

  9. Nginx特性验证-反向代理/负载均衡/页面缓存/URL重定向

    原文发表于cu:2016-08-25 参考文档: Nginx 反向代理.负载均衡.页面缓存.URL重写等:http://freeloda.blog.51cto.com/2033581/1288553 ...

  10. Tensorflow - Implement for a Softmax Regression Model on MNIST.

    Coding according to TensorFlow 官方文档中文版 import tensorflow as tf from tensorflow.examples.tutorials.mn ...