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的缩写. 一种轻量级的数据交换 ...
随机推荐
- springboot入门_模板
springboot中已经不推荐使用jsp,而是推荐使用模板,如freemarker,thymeleaf等,本文记录在sprigboot中使用模板. 创建一个maven的springboot工程, f ...
- CEF小白人系列2-DEV环境配置-Windows10+SDK+VS2015
以下资料整理来自CEF官方教学.作者做了翻译和整理.并会以一种重事件操作的方式来一点点入门. 3个问题: 在上一篇内容中我们了解了什么是CEF,能干些什么.必要的物理学习环境. 下面我们也是以带着问题 ...
- bcache的使用
一.前提:内核中需要配置bcache模块 1.1 检查 - 是否存在于内核中:检查/sys/fs/bcache目录是否存在,没有说明内核中没有bcache - 是否以内核模块方式存在:检查/lib/m ...
- mysql3 - 常规数据检索、常见操作与函数
一.常规数据检索 二.常见操作与函数
- 来了解并防范一下CSRF攻击提高网站安全
看一下我从网上找的原理图,结合举例描述,多看一遍你就知道怎么回事了. CSRF是什么呢?CSRF全名是Cross-site request forgery,是一种对网站的恶意利用,CSRF比XSS更具 ...
- soj3129: windy和水星 -- 水星数学家 2
注意int的范围:-2147483648-2147483647 如果输入会出现溢出,这题应该就是卡的这里.其使用long long就不用考虑这个. 加深:如果输入的数是很多位,直接当做字符串处理即可. ...
- linux 集群及lvs
集群及LVS 集群: 一组通过高速网络互联的计算机组,并以单一系统的模式加以管理 价格很多服务器集中起来,提供同一种服务,在客户端看起来就像只有一个服务器 可以在付出较低成本的情况下获得在性能,可靠性 ...
- Jenkins Android 自动打包配置
一.Jenkins自动打包配置 目标:1. 自动打包:2. 自动上传:3. 友好下载 1. Jenkins简介 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作. 减少重复劳 ...
- 在windows XP系统下编译和使用ffmpeg
最近在做流媒体开发这一块,在服务器端,所用的live555不支持mp4,avi等视频容器格式,所以打算运用ffmpeg来进行扩展.将MP4文件先运用ffmpeg进行解析,解析成live555所支持的基 ...
- 小说接入UC浏览器内核技术对话(二)
质辛@灿岩 质辛跟我们说一下那个删除文件的逻辑吧质辛@灿岩 应该不是删除cache下所有文件吧?质辛质辛@智鹰 提供一下我们的临时文件完整路径给 灿岩吧质辛@智鹰 是负责我们ucsdk的 技术对 ...