Android 客户端和服务器 json交互
http://www.cnblogs.com/jyan/articles/2544974.html
1.JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。
JSON具有以下这些形式:
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

2.需要的类包:
org.json.package,JSONObject
org.apache.http.package,DefaultHttpClient
3.服务器端,我们使用grails提供数据服务,数据库使用mysql,以其中一张表Person(name,gender,title)为例,在Controller中提供person列表服务,其格式为JSON

def index() {
def parg=params
if(params.data){
//如果存在data参数,将该参数转换为JSONObject
JSONObject json=new JSONObject(params.data)
def sqlinsert=new Sql(dataSource)
//从JSONObject中获取数据并插入数据库
sqlinsert.executeInsert(" INSERT INTO person (name,gender,title) values (?,?,?)", [json.getString("name"),json.getString("gender"),json.getString("title")])
}
def sql= new Sql(dataSource)
//获取Person列表,以JSON方式返回
def rows=sql.rows("select name,gender,title from person")
sql.close()
render rows as JSON
}

4 Android端
4.1从服务器端获取数据并显示

public void doHttpGetJSON(View view) throws IOException, JSONException {
DefaultHttpClient httpClient = new DefaultHttpClient();
//指定服务器端URL
HttpGet get = new HttpGet("http://10.4.30.228:8080/PersonForAndroid/person");
HttpResponse rsp = httpClient.execute(get);
//获取响应的实体
HttpEntity httpEntity = rsp.getEntity();
//将响应的实体转换为字符串
String jsonString = EntityUtils.toString(httpEntity);
//服务器端返回的数据格式为:[{"name":"Johnny","gender":"Male","title":"Programmer"},{"name":"Kevin","gender":"Male","title":"Manager"}]
//是一个JSON数组,因此使用JSONArray将字符串转换为JSONArray
//如果服务器端返回的是JSON字符串:{"name":"Johnny","gender":"Male","title":"Programmer"},则使用JSONObject jsonObject=new JSONObject(jsonString);
JSONArray jsonArray=new JSONArray(jsonString);
String resultsString="";
//遍历JSONArray,将结果输出
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObj = jsonArray.getJSONObject(i);
String name = jsonObj.getString("name");
String gender = jsonObj.getString("gender");
String title = jsonObj.getString("title");
resultsString += title + " " + name + " is " + gender+"\r\n";
}
TextView getTextView = (TextView) findViewById(R.id.jsonGetTextView);
getTextView.setText(resultsString);
}

4.2向服务器提交JSON格式数据

public void doHttpPostJSON(View view) throws IOException, JSONException {
//定义一个JSON,用于向服务器提交数据
JSONObject jsonObj = new JSONObject();
jsonObj.put("name", getTextFromView(R.id.name))
.put("gender", getTextFromView(R.id.gender))
.put("title", getTextFromView(R.id.title));
String jsonString = jsonObj.toString();
//指定Post参数
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("data", jsonString));
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost("http://10.4.30.228:8080/PersonForAndroid/person");
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse rsp = httpClient.execute(post);
HttpEntity httpEntity = rsp.getEntity();
String displayString = EntityUtils.toString(httpEntity);
TextView getTextView = (TextView) findViewById(R.id.jsonPostTextView);
getTextView.setText(displayString);
}
Android 客户端和服务器 json交互的更多相关文章
- Android客户端与服务器
就是普通的服务器端编程,还不用写界面,其实还比服务器编程简单一些.跟J2EE一样的服务器,你android这一方面只要用json或者gson直接拿数据,后台的话用tomcat接受请求操作数据,功能不复 ...
- Android客户端与服务器交互方式-小结
最近的Android项目开发过程中一个问题困扰自己很长时间,Android客户端与服务器交互有几种方式,最常见的就是webservices和json.要在Android手机客户端与pc服务器交互,需要 ...
- Android客户端与服务端交互之登陆示例
Android客户端与服务端交互之登陆示例 今天了解了一下android客户端与服务端是怎样交互的,发现其实跟web有点类似吧,然后网上找了大神的登陆示例,是基于IntentService的 1.后台 ...
- Android客户端和服务器端数据交互
网上有很多例子来演示Android客户端和服务器端数据如何实现交互不过这些例子大多比较繁杂,对于初学者来说这是不利的,现在介绍几种代码简单.逻辑清晰的交互例子,本篇博客介绍第四种: 一.服务器端: 代 ...
- android客户端向服务器发送请求中文乱码的问
android客户端向服务器发送请求的时候,并将参数保存到数据库时遇到了中文乱码的问题: 解决方法: url = "http://xxxx.com/Orders/saveorder.html ...
- Android 客户端与服务器交互
在android中有时候我们不需要用到本机的SQLite数据库提供数据,更多的时候是从网络上获取数据,那么Android怎么从服务器端获取数据呢?有很多种,归纳起来有 一:基于Http协议获取数据方法 ...
- Android客户端与服务器交互中的token
学习Token Token是什么? Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Tok ...
- 使用HttpURLConnection实现在android客户端和服务器之间传递对象
一般情况下,客户端和服务端的数据交互都是使用json和XML,相比于XML,json更加轻量级,并且省流量,但是,无论我们用json还是用xml,都需要我们先将数据封装成json字符串或者是一个xml ...
- Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)
转载地址:http://blog.csdn.net/mad1989/article/details/9147661 ZERO.前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当 ...
随机推荐
- CSU 1160 A(Contest #3)
Description 把十进制整数转换为十六进制,格式为0x开头,10~15由大写字母A~F表示. Input 每行一个整数x,0<= x <= 2^31. Output 每行输出对应的 ...
- stm32启动文件 startup_stm32f10x_hd.s
;* 文件名 : startup_stm32f10x_hd.s;* 库版本 : V3.5.0;* 说明: 此文件为STM32F10x高密度 ...
- C语言数据类型在IA32中的大小
这个主要是一些常识问题,以及在使用AT&T语法汇编时会使用的编码后缀: C声明 Intel数据类型 汇编后缀 大小(byte) char 字节 b 1 short 字 w 2 int ...
- linux常用命令:1文件处理命令
文件处理命令 1.命令格式 命令格式:命令 [-选项] [参数] 例:ls -la /etc 说明:1)个别命令使用不遵循此格式 2)档有多个选项时,可以写在一起 3)简化选项与完整选项 2.目录 ...
- MongoDB索引、聚合
用$where可以执行任意的js作为查询的一部分. db.foo.find({"$where" : function(){ for(var current in ...
- XMLParser解析xml--内容源自网络(在静态库中不能用GDATA来解析,因为静态库不能加动态库)
</Books> 从其文档结构我们可以看出,要定义一个Book实体类描述具体的书籍信息,其中用于存储的相关xml文档元素的实例变量与对应元素同名(本例:title.author.summa ...
- android onConfigurationChanged讲解
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 相信大家对这个属性已经耳熟能详,如果大家受过转屏的折磨的话! 老规矩,先讲讲官方文档是怎么说的.为什 ...
- Linux VPS下SSH常用命令
目录操作:rm -rf mydir /*删除mydir目录,不需要确认,直接删除*/mkdir dirname /*创建名为dirname的目录*/cd mydir /*进入mydir目录*/cd - ...
- Objective-C语言介绍 、 Objc与C语言 、 面向对象编程 、 类和对象 、 属性和方法 、 属性和实例变量
1 第一个OC控制台程序 1.1 问题 Xcode是苹果公司向开发人员提供的集成开发环境(非开源),用于开发Mac OS X,iOS的应用程序.其运行于苹果公司的Mac操作系统下. 本案例要求使用集成 ...
- JavaScript数据结构——集合、字典和散列表
集合.字典和散列表都可以存储不重复的值. 在集合中,我们感兴趣的是每个值本身,并把它当作主要元素.在字典和散列表中,我们用 [键,值] 的形式来存储数据. 集合(Set 类):[值,值]对,是一组由无 ...