//点击按钮发送反馈信息给服务端,成功则进入优惠券界面

        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数据和服务器进行交互的更多相关文章

  1. struts2 的验证框架validation如何返回json数据 以方便ajax交互

    struts2 的验证框架validation简单,好用,但是input只能输出到jsp页面通过struts2的标签<s:fielderror  />才能取出,(EL应该也可以). 如果使 ...

  2. android基础---->JSON数据的解析

    上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...

  3. iOS开发网络篇—发送json数据给服务器以及多值参数

    iOS开发网络篇—发送json数据给服务器以及多值参数 一.发送JSON数据给服务器 发送JSON数据给服务器的步骤: (1)一定要使用POST请求 (2)设置请求头 (3)设置JSON数据为请求体 ...

  4. 【转】iOS开发网络篇—发送json数据给服务器以及多值参数

    原文: http://www.cnblogs.com/wendingding/p/3950132.html 一.发送JSON数据给服务器 发送JSON数据给服务器的步骤: (1)一定要使用POST请求 ...

  5. IOS-网络(发送JSON数据给服务器和多值参数)

    三步走: 1.使用POST请求 2.设置请求头 [request setValue:@"application/json" forHTTPHeaderField:@"Co ...

  6. Android系列---JSON数据解析

    您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...

  7. Android中Json数据读取与创建

    一:  Json的特性和在数据交互中的地位就不用说了,直接看案例. 首先在android studio中创建assets文件目录,用于存放Json数据文件,android studio 1.3 默认项 ...

  8. Android 实现Json数据解析,并进行应用!

    从网站上获取数据然后再客户端进行解析是常见的数据交互.下面是常用的一些接口网址: webservice工厂接口 http://www.36wu.com 快递查询接口http://webservice. ...

  9. Android中Json数据读取与创建的方法

    转自:http://www.jb51.net/article/70875.htm 首先介绍下JSON的定义,JSON是JavaScript Object Notation的缩写. 一种轻量级的数据交换 ...

随机推荐

  1. JAVAEE——BOS物流项目06:分页查询、分区导出Excel文件、定区添加、分页问题总结

    1 学习计划 1.分区组合条件分页查询 n 分区分页查询(没有过滤条件) n 分区分页查询(带有过滤条件) 2.分区导出 n 页面调整 n 使用POI将数据写到Excel文件 n 通过输出流进行文件下 ...

  2. mac下使用mysql控制台命令行

    命令行中输入 open .bash_profile 然后将 alias mysql=/usr/local/mysql/bin/mysqlalias mysqladmin=/usr/local/mysq ...

  3. django-表单

    一.从Request对象中获取信息 1.URL相关的信息 属性/方法 说明 举例 request.path 除域名以外的请求路径,以正斜杠开头 "/hello/" request. ...

  4. Ubuntu上搭建SVN

    参考文档:http://www.linuxidc.com/Linux/2016-08/133961.htm http://www.linuxidc.com/Linux/2015-01/111956.h ...

  5. 深入研究Node.js的底层原理和高级使用

    深入研究Node.js的底层原理和高级使用

  6. 原创:实现ehcache动态创建cache,以及超期判断的具体逻辑

    当前最常用的三个缓存组件:ehcache.redis.memcached 其中,ehcache与应用共同运行于JVM中,属于嵌入式组件,运行效率最高,因此常被用于实现一级缓存. 在更复杂的一些系统中, ...

  7. 《android开发艺术探索》读书笔记(十五)--Android性能优化

    接上篇<android开发艺术探索>读书笔记(十四)--JNI和NDK编程 No1: 如果<include>制定了这个id属性,同时被包含的布局文件的根元素也制定了id属性,那 ...

  8. Codeforces446C - DZY Loves Fibonacci Numbers

    Portal Description 给出一个\(n(n\leq3\times10^5)\)个数的序列,进行\(m(m\leq3\times10^5)\)次操作,操作有两种: 给区间\([L,R]\) ...

  9. BZOJ2820 - 巧克力王国

    原题链接 Description 给出个二维平面上的点,第个点为,权值为.接下来次询问,给出,求所有满足的点的权值和. Solution 对于这个点建一棵k-d树,子树维护一个子树和. 如果子树所代表 ...

  10. Ansible自动化运维笔记2(Ansible的组件介绍)

    1.Ansible Inventory (1)静态主机文件 默认的ansible invetory是/etc/hosts文件,可以通过ANSIBLE_HOSTS环境变量或者通过运行命令的时候加上-i ...