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.前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当 ...
随机推荐
- C# 轉義字符
转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) ,将当前位置移到前一列 008 \f 换页(FF),将当前位置移到下页开头 012 \n 换行(LF) ,将 ...
- 移动设备和SharePoint 2013 - 第2部分:设备管道和SharePoint页面模型
博客地址:http://blog.csdn.net/foxdave 原文地址 在该系列文章中,作者展示了SharePoint 2013最显著的新功能概观--对移动设备的支持. 该系列文章: 移动设备和 ...
- 《JAVA学习笔记(14-10---14-11抽象类)》
[14-10]面向对象-抽象类的产生 /* 描述狗,行为,吼叫. 描述狼,行为,吼叫. 发现他们之间有共性,可以进行向上抽取. 当然是抽取他们的所属共性类型,犬科. 犬科这类事物,都具备吼叫行为,但是 ...
- iOS定时器NSTimer的使用方法
1.初始化 + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelect ...
- MVP架构。。。。
Model-View-Presenter(MVP)概述 MVC模式已经出现了几十年了,在GUI领域已经得到了广泛的应用,由于微软ASP.NET MVC Framework的出现,致使MVC一度成 ...
- 《view programming guide for iOS 》之可以使用动画效果的属性
frame—Use this to animate position and size changes for the view. ,框架,可以视图动态改变大小和位置 bounds—Use this ...
- python3爬虫再探之EXCEL(续)
上篇介绍了xlsxwriter的用法,本来想写一下xlrd和xlwt的用法,看到这篇文章——http://blog.csdn.net/wangkai_123456/article/details/50 ...
- PHP中使用的变量
变量是用于临时的存储值的容器.这些值可以是数字.文本,或者复杂得多的排列组合. 变量在任何编程语言中都居于核心地位,理解它们是使用PHP的关键所在.变量又是指在程序的运行过程中随时可以发生变化的量,是 ...
- Swift:网络库Alamofire
一,Alamofire的说明与配置 1,什么是Alamofire (1)Alamofire 的前身是 AFNetworking.AFNetworking 是 iOS 和 OS X 上很受欢迎的第三方H ...
- jQuery Transit
http://code.ciaoca.com/jquery/transit/ jQuery Transit 事件监听 https://developer.mozilla.org/en-US/docs/ ...