android使用JSON数据和服务器进行交互
//点击按钮发送反馈信息给服务端,成功则进入优惠券界面 Button upload = (Button) findViewById(R.id.upload);
final String finalLatitude = latitude;
final String finalLongitude = longitude;
upload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //获得建筑物名称
building=(EditText) findViewById(R.id.buildingInput);
final String buildingInput = building.getText().toString(); //获得楼层号
floor = (EditText)findViewById(R.id.floorInput);
final String floorInput = floor.getText().toString(); //获得手机号
telephone=(EditText)findViewById(R.id.telInput);
final String telInput = telephone.getText().toString(); //获得描述
description=(EditText)findViewById(R.id.descripInput);
final String descripInput = description.getText().toString(); if (buildingInput.length() <= 0
|| floorInput.length() <= 0
|| telInput.length() <= 0
|| descripInput.length() <= 0)
{
Toast.makeText(Feedback.this, "请完成反馈信息的填写", Toast.LENGTH_LONG).show();
}
else{
new Thread() {
public void run() {
Looper.prepare();
final String urlPath = "http://10.8.176.105:8080/QRCodeAdmin /commAction.action";
URL url; try {
url = new URL(urlPath); JSONObject feedbackInfo = new JSONObject();
feedbackInfo.put("building", buildingInput);
feedbackInfo.put("floor", floorInput);
feedbackInfo.put("telephone", telInput);
feedbackInfo.put("description", descripInput);
feedbackInfo.put("latitude", finalLatitude);
feedbackInfo.put("longitude", finalLongitude); /**
*
* 封装feedback数组
使用JsonObject封装
{"building":"","floor":"","telephone":"","description":"",
"latitude":"","longitude":""}
*/
//将JSON数组转换成String类型使用输出流向服务器写
String content = String.valueOf(feedbackInfo); //输出
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setDoOutput(true);//允许输出
conn.setRequestMethod("POST");//post方式输出
conn.setRequestProperty("Content-Type", "application/json");
OutputStream os = conn.getOutputStream();
os.write(content.getBytes());
os.close(); if (conn.getResponseCode() == 200) {
//传回信息,信息应当为优惠券的信息
InputStream is = conn.getInputStream(); //下面的Json数据是{"id":"","path":""}的string形式
String json = NetUtils.readString(is);
awardBean award = new awardBean();
JSONObject jsonObject = new JSONObject(json); //获得award的id和path
String id = jsonObject.getString("id");
String path = jsonObject.getString("path"); //将获得的优惠券信息发送给award界面
Intent intent1 = new Intent(Feedback.this, Award.class);
intent1.putExtra("id", id);
intent1.putExtra("path", path);
startActivity(intent1);
} else {
Toast.makeText(Feedback.this, "发送失败", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
Toast.makeText(Feedback.this, "发送失败", Toast.LENGTH_SHORT).show();
} catch (MalformedURLException e) {
Toast.makeText(Feedback.this, "发送失败", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
Toast.makeText(Feedback.this, "发送失败", Toast.LENGTH_SHORT).show();
}
}
}.start();
}
} });
下面是awardBean(我也不知道这个bean写的是不是必要):
package com.example.euphemiaxiao.feedback; import java.io.Serializable;
/**
* Created by Euphemia Xiao on 2017/7/13.
*/ public class awardBean implements Serializable{
public String path;
public String id; public awardBean()
{
this.path = path;
this.id=id;
}
public String getPath()
{
return path;
} public String getId()
{
return id;
}
}
NetUtils是一个工具类:
package com.example.euphemiaxiao.feedback; import java.io.ByteArrayOutputStream;
import java.io.InputStream; /**
* Created by Euphemia Xiao on 2017/7/4.
*/ public class NetUtils {
public static byte[] readBytes(InputStream is){
try {
byte[] buffer = new byte[1024];
int len = -1 ;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while((len = is.read(buffer)) != -1){
baos.write(buffer, 0, len);
}
baos.close();
return baos.toByteArray();
} catch (Exception e) {
e.printStackTrace();
}
return null ;
}
public static String readString(InputStream is){
return new String(readBytes(is));
}
}
P.S.另一种接收(上面的接收是接收一条信息{"award":{"id":"","path":""}},下面的接收是接收一组信息{{"student":{"studentID":"","name":""}}{"student":{"studentID":"","name":""}}{"student":{"studentID":"","name":""}}...})
JSONArray actArray = jsonObject.getJSONArray("student"); for (int i = 0; i < actArray.length(); i++) {
//获得JSON数组中的每一个JSONObject对象
JSONObject actObject = actArray.getJSONObject(i);
String stuID=actObject.getString("studentID");
studentID.add(stuID);
String stuName = actObject.getString("name");
//studentName.add(stuName);
studentInfo.add(stuID+" "+stuName);
}
再P.S.获得一个json数据,前端对其进行处理,获取key和value
var obj = {"abc":"123"};
for(var key in obj) {
console.log(key+"+"obj[key])}
输出结果为abc+123
android使用JSON数据和服务器进行交互的更多相关文章
- struts2 的验证框架validation如何返回json数据 以方便ajax交互
struts2 的验证框架validation简单,好用,但是input只能输出到jsp页面通过struts2的标签<s:fielderror />才能取出,(EL应该也可以). 如果使 ...
- android基础---->JSON数据的解析
上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...
- iOS开发网络篇—发送json数据给服务器以及多值参数
iOS开发网络篇—发送json数据给服务器以及多值参数 一.发送JSON数据给服务器 发送JSON数据给服务器的步骤: (1)一定要使用POST请求 (2)设置请求头 (3)设置JSON数据为请求体 ...
- 【转】iOS开发网络篇—发送json数据给服务器以及多值参数
原文: http://www.cnblogs.com/wendingding/p/3950132.html 一.发送JSON数据给服务器 发送JSON数据给服务器的步骤: (1)一定要使用POST请求 ...
- IOS-网络(发送JSON数据给服务器和多值参数)
三步走: 1.使用POST请求 2.设置请求头 [request setValue:@"application/json" forHTTPHeaderField:@"Co ...
- Android系列---JSON数据解析
您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...
- Android中Json数据读取与创建
一: Json的特性和在数据交互中的地位就不用说了,直接看案例. 首先在android studio中创建assets文件目录,用于存放Json数据文件,android studio 1.3 默认项 ...
- Android 实现Json数据解析,并进行应用!
从网站上获取数据然后再客户端进行解析是常见的数据交互.下面是常用的一些接口网址: webservice工厂接口 http://www.36wu.com 快递查询接口http://webservice. ...
- Android中Json数据读取与创建的方法
转自:http://www.jb51.net/article/70875.htm 首先介绍下JSON的定义,JSON是JavaScript Object Notation的缩写. 一种轻量级的数据交换 ...
随机推荐
- Selenium+Python进行web自动化测试(Demo+API)
Selenium官方网站 http://selenium-python.readthedocs.io/ 配置使用环境 下载相应的浏览器驱动, Firefox 是默认的 本文以 chrome 为主 ,放 ...
- es6变量声明和解构赋值
/*声明: * 本文内容多为学习借鉴性内容,大部分非原创 * 特别感谢阮一峰的 ECMAScript6 入门,推荐大家学习 */ 一.es5变量声明的不足 1.变量提升和函数声明提升 es5的代码加载 ...
- WordPress 实现附件上传自动重命名但不改变附件标题
WordPress 上传媒体文件时,默认会保持文件名不变.如果上传文件名中包含中文字符,则会造成部分浏览器显示的文件 URL 疑似乱码甚至无法访问.网上流行较广的是通过注册 wp_handle_up ...
- MySQL Server 5.0安装教程
相信很多朋友刚开始接触mysql数据库服务器,下面是mysql的安装教程,步骤明细也有详细的说明. 工具/原料 mysql MySQL安装的图解 1 打开下载的mysql安装文件mysql-5 ...
- 浏览器输入URL到响应页面的全过程
B/S网络架构从前端到后端都得到了简化,都基于统一的应用层协议HTTP来交互数据,HTTP协议采用无状态的短链接的通信方式,通常情况下,一次请求就完成了一次数据交互,通常也对应一个业务逻辑,然后这次通 ...
- logback KafkaAppender 写入Kafka队列,集中日志输出.
为了减少应用服务器对磁盘的读写,以及可以集中日志在一台机器上,方便使用ELK收集日志信息,所以考虑做一个jar包,让应用集中输出日志 网上搜了一圈,只发现有人写了个程序在github 地址:https ...
- 使用line_profiler查看api接口函数每行代码执行时间
项目情景描述: 在restful架构风格的项目交付测试的过程中,某接口出现 请求超时导致的http 502 Bad Gateway,于是开始排查具体是接口函数中的哪行代码或函数 响应时间过长导致的50 ...
- kolla-ansible快速入门
kolla-ansible快速入门 kolla-ansible是一个结构相对简单的项目,它通过一个shell脚本,根据用户的参数,选择不同的playbook和不同的参数调用ansible-playbo ...
- NewLife.XCode 上手指南2018版(二)增
目录 NewLife.XCode 上手指南2018版(一)代码生成 NewLife.XCode 上手指南2018版(二)增 NewLife.XCode 上手指南2018版(三)查 NewLife.XC ...
- Hbase配置java客户端
1.修改windows配置文件 C:\WINDOWS\system32\drivers\etc\hosts 将远程hbase和zookeeper主机的IP地址加进去 54.0.88.53 H ...