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的缩写. 一种轻量级的数据交换 ...
随机推荐
- Python基础总结
刚学习Python时,边学边总结的,采用思维导图的形式, 适合回顾使用.内容参考<Python:从入门到实践>一书. 再给出一张Datacamp网站上的一张关于Python基础的总 ...
- python进阶学习笔记(三)
3.类的继承 3.1,python中什么是类的继承 答案是肯定的. 也就是说,如果一个实例是一个子类,那么它也是一个父类 总是从某各类继承,如果没有合适的类,就要从object类继承:super(). ...
- Python数据结构之四——set(集合)
Python版本:3.6.2 操作系统:Windows 作者:SmallWZQ 经过几天的回顾和学习,我终于把Python 3.x中的基础知识介绍好啦.下面将要继续什么呢?让我想想先~~~嗯,还是 ...
- 用Composer获取第三方资源总是失败咋办?
凉拌!!! 不不不,哥可是一个有追求的人,没那么容易放弃的! 所以我选择用中国全量镜像,https://pkg.phpcomposer.com/ 使用方法: 对,就是命令行方法,我最喜欢的方法!!! ...
- git一键部署代码到远程服务器(linux)(采坑总结)
原来一直使用FileZilla来代码部署,去年使用git,代码版本管理,真TM好用,一起回顾下历程! 一. 代码部署方式及思路: 1. 使用FTP/SFTP工具,上传代码 2. git人工部署.1. ...
- LeetCode第二天&第三天
leetcode 第二天 2017年12月27日 4.(118)Pascal's Triangle JAVA class Solution { public List<List<Integ ...
- hdu1251 map水过
更快的方法应该是字典树,不用处理前缀. AC代码: #include<iostream> #include<cstring> #include<string> #i ...
- swift 学习之自动引用计数
swift 学习之自动引用计数 学习和研究的主要是"实例对象和实例对象直接的相会强引用所产生的内从泄漏"和"使用闭包产生的强引用造成的内存泄漏" 注意:只有以引 ...
- jquery 图片转为base64
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- 用DriverStudio开发USB驱动程序
很多写Windows Device Driver的开发人员基本上都是使用Windows DDK进行开发的.但是,现在也有不少人都开始借助一些辅助工具.笔者去年开始接触到DriverStudio,发现它 ...