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.前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当 ...
随机推荐
- 长理ACM 7-密码破译(闫博钊)
/* //题目标题: *密码破译(闫博钊) //题目描述: *某组织欲破获一个外星人的密码,密码由一定长度的字串组成.此组织拥有一些破译此密码的长度不同的钥匙,若两个钥匙的长度之和恰好为此密码的长度, ...
- 神奇的NOIP模拟赛 T3 LGTB 玩THD
LGTB 玩THD LGTB 最近在玩一个类似DOTA 的游戏名叫THD有一天他在守一座塔,对面的N 个小兵排成一列从近到远站在塔前面每个小兵有一定的血量hi,杀死后有一定的金钱gi每一秒,他都可以攻 ...
- 开发基于Handoff的App(Swift)
iOS8推出一个新特性,叫做Handoff.Handoff中文含义为换手(把接力棒传给下一个人),可以在一台Mac和iOS设备上开始工作,中途将工作交换到另一个Mac或iOS设备中进行 ...
- 记录一些容易忘记的属性 -- UIGestureRecognize手势
//一个手势只能添加到一个view上面 //设置当前手势需要的点击次数 _tapRec.numberOfTapsRequired = 1;//(默认为1) //设置当前需要几个手指同时点击 ...
- 《剑指offer-名企面试官精讲典型编程题》读后感
首先,不得不说这是一本好书!!! 我接触这本书是在学长的推荐下去看的,而且口碑还是挺好的一本书,豆瓣的评分也比较高,当我刚看了它,我就深深的爱上了这本书,到现在为止,我已经看了三遍这本书了,平时无聊时 ...
- 使用 VisualVM 进行性能分析及调优
VisualVM 是一款免费的性能分析工具.它通过 jvmstat.JMX.SA(Serviceability Agent)以及 Attach API 等多种方式从程序运行时获得实时数据,从而进行动态 ...
- HttpClient -- 血的教训
HttpClient -- 血的教训 千万别用httpClient 不支持httpVersion2.0 因为这个导致项目重做
- UIkit框架之Uivew
1.继承链:UIresponder:NSObject 2.通过使用 addGestureRecognizer:方法可以为视图添加手势 3.下面的属性都可以用来用于动画 @property frame ...
- Postfix之sasldb2
# 2.#配置postfix启用sasldb2作为smtp的账号秘密效验方式 3.#编辑通过sasl启用smtp账号密码效验的配置 4.vi /etc/sasl2/smtpd.conf #vi写入或编 ...
- Android Studio, gradle plugin is too old or set ANDROID_DAILY_OVERRIDE
早上打开Android Studio,忽然报了个错,说gradle plugin版本过低,让更新或者设置ANDROID_DAILY_OVERRIDE环境变量: 日志如下: INFO - ls.idea ...