- 浏览: 385470 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (269)
- FY_UML (3)
- FY_JAVA (12)
- FY_JavaScript脚本 (7)
- FY_JSP (3)
- FY_Tapestry框架 (12)
- FY_Spring框架 (3)
- FY_Manager (5)
- FY_Junit(单元测试) (3)
- SERVER (14)
- FY_Struts2框架 (3)
- FY_SVN (2)
- FY_NoSQL (2)
- FY_jquery_sir (13)
- FY_hibernate_sir (8)
- FY_设计模式_sir (6)
- FY_Extjs_sir (10)
- FY_CI_sir (5)
- FY_Oracle_sir (11)
- FY_MySql_sir (10)
- FY_Hadoop_sir (3)
- FY_SOA_sir (1)
- 中文分词技术 (1)
- FY_Android (52)
- FY_架构 (2)
- FY_PhoneGap (2)
- FY_Webstorm (5)
- FY_Sencha Touch (3)
- HTML5应用快速开发 (1)
- FY_python (0)
- HADOOP (1)
- AI (0)
最新评论
-
antao592:
楼主,HkDataSourceWrapper中的getCurr ...
结合spring jdbc 实现分表分库的数据库访问构思 -
bonait:
不错,看看我的这个怎么样www.zipin168.com
So Easy京东商城 -
chenzheng8975:
...
So Easy京东商城 -
yzhenxing:
我导入demo后少com.google.android.gms ...
google地图demo -
echoaiya:
非常感谢~~
google地图demo
--------------------------------------------AndroidManifest.xml---------------------------------
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kawa.ch32"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<!-- 网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
--------------------------------------------activity_main.xml------------------------------------
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btn1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="getJSONArray" />
<Button
android:id="@+id/btn2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="getJSONObject" />
<Button
android:id="@+id/btn3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="getJSON" />
</LinearLayout>
--------------------------------------------MainActivity.java--------------------------------------
package com.kawa.ch32;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.kawa.ch32.util.JsonUtil;
public class MainActivity extends Activity {
private Button btn_array;
private Button btn_object;
private Button btn_json;
private String URL_JSONARRAY = "http://192.168.1.105:8080/com.kawa.ch32.web/JSONArray";
private String URL_JSONOBJECT = "http://192.168.1.105:8080/com.kawa.ch32.web/JSONObject";
private String URL_JSON = "http://192.168.1.105:8080/com.kawa.ch32.web/JSON";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViews();
setListeners();
}
private void findViews() {
btn_array = (Button) findViewById(R.id.btn1);
btn_object = (Button) findViewById(R.id.btn2);
btn_json = (Button) findViewById(R.id.btn3);
}
private void setListeners() {
btn_array.setOnClickListener(onClickListener);
btn_object.setOnClickListener(onClickListener);
btn_json.setOnClickListener(onClickListener);
}
private OnClickListener onClickListener = new OnClickListener() {
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn1:
try {
showResult(JsonUtil.getJSONArray(URL_JSONARRAY));
} catch (Exception e1) {
e1.printStackTrace();
}
break;
case R.id.btn2:
try {
showResult(JsonUtil.getJSONObject(URL_JSONOBJECT));
} catch (Exception e) {
e.printStackTrace();
}
break;
case R.id.btn3:
try {
showResult(JsonUtil.getJSON(URL_JSON));
} catch (Exception e) {
e.printStackTrace();
}
break;
}
}
};
private void showResult(List<Map<String, String>> jsonList) {
StringBuffer result = new StringBuffer();
try {
for (Map<String, String> map : jsonList) {
String id = map.get("id");
String name = map.get("name");
result.append(id).append("--").append(name);
}
new AlertDialog.Builder(this).setTitle("json")
.setMessage(result.toString()).setPositiveButton("ok", null).show();
} catch (Exception e) {
e.printStackTrace();
}
}
}
--------------------------------------------JsonUtil.java------------------------------------------
package com.kawa.ch32.util;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONObject;
import android.util.Log;
public class JsonUtil {
/**
* 获取"数组形式"的JSON数据,
* 数据形式:[{"id":1,"name":"小猪"},{"id":2,"name":"小猫"}]
* @param path 网页路径
* @return 返回List
* @throws Exception
*/
public static List<Map<String, String>> getJSONArray(String path)
throws Exception {
String json = null;
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
Map<String, String> map = null;
URL url = new URL(path);
// 利用HttpURLConnection对象,我们可以从网络中获取网页数据.
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 单位是毫秒,设置超时时间为5秒
conn.setConnectTimeout(5 * 1000);
// HttpURLConnection是通过HTTP协议请求path路径的,所以需要设置请求方式,可以不设置,因为默认为GET
conn.setRequestMethod("GET");
// 判断请求码是否是200码,否则失败
if (conn.getResponseCode() == 200) {
InputStream is = conn.getInputStream(); // 获取输入流
byte[] data = readStream(is); // 把输入流转换成字符数组
json = new String(data); // 把字符数组转换成字符串
// 数据形式:[{"id":1,"name":"小猪","age":22},{"id":2,"name":"小猫","age":23}]
// 数据直接为一个数组形式,所以可以直接 用android提供的框架JSONArray读取JSON数据,转换成Array
JSONArray jsonArray = new JSONArray(json);
for (int i = 0; i < jsonArray.length(); i++) {
// 每条记录又由几个Object对象组成
JSONObject item = jsonArray.getJSONObject(i);
int id = item.getInt("id"); // 获取对象对应的值
String name = item.getString("name");
map = new HashMap<String, String>(); // 存放到MAP里面
map.put("id", id + "");
map.put("name", name);
list.add(map);
}
}
return list;
}
/**
* 获取"对象形式"的JSON数据,
* 数据形式:{"total":2,"success":true,"arrayData":[{"id":1,"name":"小猪"},{"id":2,"name":"小猫"}]}
* @param path 网页路径
* @return 返回List
* @throws Exception
*/
public static List<Map<String, String>> getJSONObject(String path)
throws Exception {
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
Map<String, String> map = null;
URL url = new URL(path);
// 利用HttpURLConnection对象,我们可以从网络中获取网页数据
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5 * 1000); // 单位是毫秒,设置超时时间为5秒
// HttpURLConnection是通过HTTP协议请求path路径的,所以需要设置请求方式,可以不设置,因为默认为GET
conn.setRequestMethod("GET");
// 判断请求码是否是200码,否则失败
if (conn.getResponseCode() == 200) {
InputStream is = conn.getInputStream(); // 获取输入流
byte[] data = readStream(is); // 把输入流转换成字符数组
String json = new String(data); // 把字符数组转换成字符串
// 数据形式:{"total":2,"success":true,"arrayData":[{"id":1,"name":"小猪"},{"id":2,"name":"小猫"}]}
// 返回的数据形式是一个Object类型,所以可以直接转换成一个Object
JSONObject jsonObject = new JSONObject(json);
int total = jsonObject.getInt("total");
Boolean success = jsonObject.getBoolean("success");
// 里面有一个数组数据,可以用getJSONArray获取数组
JSONArray jsonArray = jsonObject.getJSONArray("arrayData");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject item = jsonArray.getJSONObject(i); // 得到每个对象
int id = item.getInt("id"); // 获取对象对应的值
String name = item.getString("name");
map = new HashMap<String, String>(); // 存放到MAP里面
map.put("id", id + "");
map.put("name", name);
list.add(map);
}
}
return list;
}
/**
* 获取类型复杂的JSON数据
*数据形式:
{"name":"小猪",
"age":23,
"content":{"questionsTotal":2,
"questions": [ { "question": "what's your name?", "answer": "小猪"},
{"question": "what's your age", "answer": "23"}]
}
}
* @param path 网页路径
* @return 返回List
* @throws Exception
*/
public static List<Map<String, String>> getJSON(String path) throws Exception {
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
Map<String, String> map = null;
URL url = new URL(path);
// 利用HttpURLConnection对象,我们可以从网络中获取网页数据.
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5 * 1000); // 单位是毫秒,设置超时时间为5秒
// HttpURLConnection是通过HTTP协议请求path路径的,所以需要设置请求方式,可以不设置,因为默认为GET
conn.setRequestMethod("GET");
if (conn.getResponseCode() == 200) {// 判断请求码是否是200码,否则失败
InputStream is = conn.getInputStream(); // 获取输入流
byte[] data = readStream(is); // 把输入流转换成字符数组
String json = new String(data); // 把字符数组转换成字符串
/*
* 数据形式:
* {"name":"小猪",
* "age":23,
* "content":{"questionsTotal":2,
* "questions": [ { "question": "what's your name?", "answer": "小猪"},
* {"question": "what's your age", "answer":
* "23"}]
* }
* }
*/
// 返回的数据形式是一个Object类型,所以可以直接转换成一个Object
JSONObject jsonObject = new JSONObject(json);
String name = jsonObject.getString("name");
int age = jsonObject.getInt("age");
Log.i("abc", "name:" + name + " | age:" + age); // 测试数据
// 获取对象中的对象
JSONObject contentObject = jsonObject.getJSONObject("content");
// 获取对象中的一个值
String questionsTotal = contentObject.getString("questionsTotal");
// 获取对象中的数组
JSONArray contentArray = contentObject.getJSONArray("questions");
for (int i = 0; i < contentArray.length(); i++) {
JSONObject item = contentArray.getJSONObject(i); // 得到每个对象
String question = item.getString("question"); // 获取对象对应的值
String answer = item.getString("answer");
map = new HashMap<String, String>(); // 存放到MAP里面
map.put("question", question);
map.put("answer", answer);
list.add(map);
}
}
return list;
}
/**
* 把输入流转换成字符数组
* @param inputStream 输入流
* @return 字符数组
* @throws Exception
*/
public static byte[] readStream(InputStream inputStream) throws Exception {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
bout.write(buffer, 0, len);
}
bout.close();
inputStream.close();
return bout.toByteArray();
}
}
--------------------------------------------结果----------------------------------------------------
War包放入tomcat
启动tomcat,访问网页地址
本机IP
客户端效果
点击getJSONArray按钮
点击getJSONObject按钮
点击getJSON按钮
- com.kawa.ch32.web.war (4.3 KB)
- 下载次数: 44
- com.kawa.ch32.rar (692.5 KB)
- 下载次数: 51
发表评论
-
史上最快 Android N(安卓7.0)运行效率暴增至600%
2016-10-15 10:08 928谷歌I/O 2016开发者大会在公司总部正式拉开 ... -
So Easy京东商城
2014-12-10 16:51 1578So Easy京东商城 我和17位小伙伴们 ... -
过期Gallery取代方案horizontalscrollView之菜单导航效果
2014-03-23 16:19 2415效果 ------------------------- ... -
过期Gallery取代方案horizontalscrollView之京东效果
2014-03-23 15:57 3881效果 ------------------------- ... -
过期Gallery取代方案horizontalscrollView之幻灯片效果
2014-03-21 17:33 2622效果 ------------------------- ... -
tabhostandbadgeview
2014-03-19 13:45 1034效果 -------------------------- ... -
Android优秀开源项目大全
2014-03-18 15:17 1983以下是开源项目 1、and ... -
Android分页控件xlistview
2014-03-18 14:51 1673strings.xml ----------------- ... -
过期Gallery取代方案horizontalscrollView之普通画廊
2014-03-17 22:48 2444activity_main.xml ---------- ... -
viewpage
2014-03-17 18:08 1059strings.xml ----------------- ... -
FragmentStatePagerAdapter分页
2014-03-17 17:27 806ViewPager ViewPager 如 ... -
FragmentPagerAdapter与FragmentStatePagerAdapter差异
2014-03-17 17:20 1317简介 平常使用的FragmentPagerAdapter和F ... -
抽屉菜单
2014-03-16 12:51 1844strings.xml ----------------- ... -
px和dip以及sp的区别
2014-03-08 17:01 718显示单位px和dip以及sp的区别 dip: devi ... -
fragment生命周期
2014-03-06 16:59 890Fragment必须被写成可重用的模块。因为fragmen ... -
过期API_AlertDialog
2014-03-02 10:07 1151layout----------------------- ... -
Android_Jni 操作指南
2014-01-10 14:45 949Android_Jni 操作指南 NDK(Nati ... -
各种各样圆形进度条
2013-11-11 16:30 563http://www.apkbus.com/android-1 ... -
红杏出墙__实训版
2013-04-20 18:59 1083红杏出墙__实训版 -
google地图demo
2013-04-09 14:25 3203---------------------------- ...
相关推荐
在Android开发中,数据交换和存储常常涉及到JSON和XML这两种数据格式。它们是网络通信中常用的轻量级数据表示方式,使得服务器与客户端之间能够高效地传输数据。本篇文章将详细探讨Android环境下如何进行JSON与XML的...
该资源包含CH03至CH05章节的源码,为开发者提供了丰富的学习素材,旨在帮助他们更好地理解和掌握Android SDK的各种功能和特性。 CH03章节通常会涵盖Android应用的基本架构和组件,例如Activity、Intent、Service、...
《Android SDK开发范例大全(第二版)CH05》是针对Android应用开发的一份重要资源,由清华大学出版社出版。这个压缩包包含了第五章的源代码,为开发者提供了丰富的实践示例,帮助深入理解Android SDK的使用。在这个...
"ch12_android开发_"可能是指一个章节或教程,专注于讲解如何在Android应用中管理和处理各种类型的用户输入数据。在这个主题下,我们可以探讨几个关键知识点: 1. **用户界面(UI)组件**:Android提供了一系列预定...
《Android OPhone开发完全讲义源码Ch14》是一份深入探讨Android OPhone平台开发的教程资料,其中包含了第14章的源代码。在这一章节中,开发者将了解到如何利用Android SDK和OPhone特有的功能来构建高效、功能丰富的...
《Android SDK范例开发大全 第3版 源代码 CH5》是一本专注于Android应用程序开发的实战指南,其中包含了丰富的示例代码,旨在帮助开发者深入理解Android SDK的使用方法和技巧。这一章节(CH5)可能主要关注的是...
《Android OPhone开发完全讲义源码Ch05》是一份深入探讨Android OPhone平台开发的教程资料,其中包含了第五章的源代码。这个压缩包是开发者和学习者宝贵的资源,帮助他们理解并实践Android OPhone应用的开发过程。...
《Android SDK范例开发大全 第3版 源代码 CH8》是一本专注于Android应用程序开发的实战指南,其中包含了丰富的示例代码,旨在帮助开发者深入理解Android SDK的各种功能和使用方法。这部分源代码对应的是书中的第八章...
网络编程也是Android开发中的重要部分,本章可能会讲解如何使用HttpURLConnection或OkHttp进行网络请求,以及如何处理JSON或XML数据。同时,对于现代的Android应用,学习如何集成第三方库,如Retrofit或Volley,也是...
《Android Ophone开发完全讲义源码Ch24》是一份深入探讨Android Ophone平台开发的教程资料,其中包含了第24章的源代码。在这一章节中,开发者将了解到如何在Android Ophone环境下进行应用的构建、调试以及优化。...
10. **Android互联网应用**(ch_11Android互联网应用.ppt):介绍如何在Android应用中实现网络功能,包括HTTP请求、WebSocket通信、JSON解析,以及处理网络权限。 通过这些课件,开发者将能够全面了解Android应用...
API返回的JSON数据解析后,可以使用`PolylineOptions`在地图上绘制路线。 总的来说,Android开发中的Google Map和GPS功能是增强用户体验的重要手段。开发者需要掌握如何正确使用`LocationManager`和`GoogleMap`API...
4. **网络通信**:ch22可能涉及到Android应用的网络编程,如HTTP请求,使用OkHttp或Retrofit库,或者处理JSON数据。这包括了如何获取和解析网络数据,实现网络服务调用。 5. **多媒体与传感器**:ch23可能涵盖了...
在Android Ophone开发中,Chapter 6(ch06)通常涵盖了系统架构、应用程序组件、UI设计、数据存储以及网络通信等关键知识点。这个压缩包可能包含了一系列的代码示例、教程文档或项目实例,旨在帮助开发者深入理解...
综上所述,"Android SDK开发范例大全source_CH04"包含的内容广泛,涉及了Android开发的诸多核心技术和最佳实践。通过学习并实践这些示例,开发者可以提升自己的Android开发技能,更好地理解和运用Android SDK。
1. **Ch01 - Android基础** - Android系统架构:了解Android系统的层次,包括Linux内核、硬件抽象层、运行时库、应用程序框架和应用程序。 - Android Studio:Android的官方集成开发环境(IDE),包括项目创建、...
同时,可能还会涉及到JSON解析,因为网络数据通常以JSON格式传输,你需要将这些数据转换为Android应用可以处理的对象。 第16章可能是关于服务和广播接收器的,这两个组件允许应用在后台运行任务和响应系统事件。...
源码ch11-14涵盖了书中第11至14章的内容,这部分主要涉及Android应用开发中的高级主题和技术,包括自定义视图、数据存储、网络通信以及多线程处理。 在第11章,"自定义View与动画"中,读者将学习如何扩展Android的...
《Android SDK范例开发大全 第3版 源代码 CH7》是一本专注于Android应用程序开发的实战指南,其中包含了丰富的示例代码,旨在帮助开发者深入理解Android SDK的各种功能和使用方法。这部分源代码主要聚焦于第7章的...
Ch08可能涉及活动(Activity)和意图(Intent)的概念,这是Android应用中实现屏幕间导航的关键。活动是用户与应用交互的窗口,而意图则用于在活动之间传递数据和启动新的操作。此外,可能会讲解到生命周期管理和...