Android客户端与服务器之间传递json数据

在服务器与客户端之间通信,json数据是一种常用格式,本文主要在服务器端构建数据,在客户端接收显示,并且在listview上显示出来

服务器端的构建

简单的javabean与返回结果函数与插入函数略过

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");response.setCharacterEncoding("UTF-8");PrintWriter out = response.getWriter();List<MyShop> shops = JsonService.getListShop();StringBuffer sb = new StringBuffer();sb.append('[');for (MyShop shop : shops) {sb.append('{').append("\"name\":").append("\""+shop.getName()+"\"").append(",");   sb.append("\"detail\":").append("\""+shop.getDetail()+"\"").append(",");sb.append("\"distance\":").append("\""+shop.getDistance()+"\"").append(",");sb.append("\"address\":").append("\""+shop.getAddress()+"\"").append(",");sb.append("\"popularity\":").append(shop.getPopularity());sb.append('}').append(",");}sb.deleteCharAt(sb.length() - 1);sb.append(']');out.write(new String(sb));out.flush();out.close();}

在浏览器中直接输入访问http://localhost:8080/AppServer/JsonServlet
可得
json数据

可以在服务器端直接查看json数据

客户端接收与解析json数据

public class JsonParse {/*** 解析Json数据** @param urlPath* @return mlists* @throws Exception*/public static List<MyShop> getListShop(String urlPath) throws Exception {List<MyShop> mlists = new ArrayList<MyShop>();byte[] data = readParse(urlPath);JSONArray array = new JSONArray(new String(data));for (int i = 0; i < array.length(); i++) {JSONObject item = array.getJSONObject(i);String name = item.getString("name");String detail = item.getString("detail");String distance = item.getString("distance");String popularity = item.getString("popularity");String address = item.getString("address");mlists.add(new MyShop(name, detail, distance,address,popularity));}return mlists;}/*** 从指定的url中获取字节数组** @param urlPath* @return 字节数组* @throws Exception*/public static byte[] readParse(String urlPath) throws Exception {ByteArrayOutputStream outStream = new ByteArrayOutputStream();byte[] data = new byte[1024];int len = 0;URL url = new URL(urlPath);HttpURLConnection conn = (HttpURLConnection) url.openConnection();InputStream inStream = conn.getInputStream();while ((len = inStream.read(data)) != -1) {outStream.write(data, 0, len);}inStream.close();return outStream.toByteArray();}}

在activity中开启子线程来接收服务器数据

new Thread(new Runnable() {private String tag;@Overridepublic void run() {// TODO Auto-generated method stub//获得新闻集合List<MyShop> shopList = null;try {shopList = JsonParse.getListShop("http://192.168.247.1:8080/AppServer/JsonServlet");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}Log.i(tag, "在RUN中LIST长度为"+shopList.size());Message msg=new Message();if(shopList!=null){msg.what=SUCCESS;msg.obj=shopList;}else{msg.what=FAILED;}handler.sendMessage(msg);Log.i(tag, "***********T长度为"+shopList.size());}}).start();

消息处理器

 //消息处理器private Handler handler=new Handler(){/*** 接收消息*/@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubString tag = null;switch (msg.what) {case SUCCESS:  //访问成功,有数据//绑定数据Log.i(tag,"%%%%%%%%%%到达了消息处理器");myshoplist=(List<MyShop>) msg.obj;Log.i(tag, "handleMessage中数据newInfoList长度为"+myshoplist.size());NearAdapter adapter=new NearAdapter();Log.i(tag, "有没有到达ADAPTER"+adapter.getCount());showList.setAdapter(adapter);break;case FAILED:    //访问失败Toast.makeText(ChooseMer.this, "当前网络崩溃了", 0).show();break;default:break;}}};

配置适配器

public class NearAdapter extends BaseAdapter {@Overridepublic int getCount() {// TODO Auto-generated method stubreturn  myshoplist.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if (convertView == null) {LayoutInflater inflater = LayoutInflater.from(ChooseMer.this);convertView = inflater.inflate(R.layout.nearby_list_item, null);init(convertView,position);}return convertView;}public void init(View convertView,int position) {hold.name = (TextView) convertView.findViewById(R.id.nearby_item_name);MyShop shop=myshoplist.get(position);hold.name.setText(shop.getName());hold.local = (TextView) convertView.findViewById(R.id.nearby_item_local);hold.local.setText(shop.getDetail());hold.dis1 = (TextView) convertView.findViewById(R.id.nearby_item_dis1);hold.dis1.setText(shop.getDistance());hold.dis2 = (TextView) convertView.findViewById(R.id.nearby_item_dis2);hold.dis2.setText(shop.getAddress());hold.dis3 = (TextView) convertView.findViewById(R.id.nearby_item_dis3);hold.dis3.setText(shop.getPopularity());}}

配置完成,效果如下

安卓显示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高通全系列手机处理器深度解析 (升级选手机必备)附参数对比表

关于高通处理器和ARM之间的关系 正式介绍高通处理器之前&#xff0c;笔者认为还是先来大致了解下高通和ARM公司之间的关系。在之前的文章中我们也介绍过ARM公司以及相应的ARM架构&#xff0c;实际上&#xff0c;包括高通在内所有终端手机芯片厂商的手机处理器产品的底层都是基…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 2丨连续出现的数字【难度中等】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

《2018中国大数据发展指数报告》发布:广东、上海、贵州、北京、重庆领先

来源&#xff1a;网络传播杂志摘要&#xff1a;2018年8月24日&#xff0c; 中国电子信息产业发展研究院在首届“中国国际智能产业博览会”上发布了《中国大数据发展指数报告(2018年)》。此报告为我国找准大数据行业发展重点、优化行业发展环境、调整行业管理体制机制等提供了有…

利用gitbash上传项目到github

GitHub主要是用作基于Git的分布式版本管理系统的库&#xff0c;可以保存和管理自己的代码&#xff0c;而且主要用作代码的合作开发。不过对于我来说&#xff0c;Git控制系统还比较难以掌握&#xff0c;或者开发小系统还不太用得着&#xff0c;因此我把GitHub当作分享和展示代码…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 3丨删除重复的电子邮箱【难度简单】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

36氪研究 | 智慧零售行业研究报告

来源&#xff1a;36Kr智慧零售带来的变化&#xff0c;对你我的生活有多大的影响&#xff1f;上世纪末&#xff0c;当你想吃一桌大鱼大肉改善一下近期的伙食&#xff0c;下馆子是一个不错的选择&#xff0c;但由于这样会超出你的消费预期&#xff0c;买回家自己烹饪便成为了你唯…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 3丨行程和用户【难度困难】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

数据结构之线性表

一、线性表的顺序存储实现&#xff0c;利用数组实现线性表 typedef struct{int Data[MAXSIZE];int Last; }List;List *MakeEmpty() {List *PtrL;PtrL(List*)malloc(sizeof(List));PtrL->Last-1;return PtrL; } int FindKth( int K, List* PtrL ) //根据位序K&#xff0c;返…

读写Excel2003文档

1.程序说明1.1编程语言&#xff1a;Java1.2 第三方库&#xff1a;Apache POIApache POI 官网&#xff1a;http://poi.apache.org/下载页面&#xff1a;http://poi.apache.org/download.html版本3.8下载地址&#xff1a;http://www.apache.org/dyn/closer.cgi/poi/release/bin/p…

行业|深度解析:医疗机器人商用要过几道坎

来源&#xff1a; 《瞭望》新闻周刊记者扈永顺“深层血管不好找&#xff0c;医生给患者扎针主要靠经验。现在用我们的超声导航穿刺辅助医疗机器人系统&#xff0c;可以从实时超声影像屏幕上看到血管的位置&#xff0c;并基于穿刺路径规划以及穿刺导航系统&#xff0c;辅助医护人…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 4丨游戏玩法分析 I【难度简单】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

数据结构之堆栈与队列

堆栈与队列是两种重要的基础数据结构&#xff0c;一个是先入后出&#xff0c;一个是先入先出&#xff0c;有着广泛的应用&#xff0c;本文分别使用数组与链表实现堆栈与队列 顺序存储方式实现堆栈 #define MaxSize 20 #define ERROR -1 typedef struct {int Data[MaxSize];in…

Oracle修改表空间大小

使用Oracle10g建立数据库后&#xff0c;向数据库中导入了部分数据&#xff0c;第二天继续向数据库中导入数据表时发生错误&#xff1a; 查了很多资料发现原来是Oracle表空间限制&#xff0c;导致无法继续导入数据的原因。如果在建立数据库时没有设置&#xff0c; Oracle 默认的…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 4丨员工薪水中位数【难度困难】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

2018中国民营企业500强榜单

来源&#xff1a;央视财经、先进制造业由全国工商联和辽宁省人民政府共同主办的2018中国民营企业500强峰会29日在沈阳召开&#xff0c;会上发布了2018中国民营企业500强榜单和《2018中国民营企业500强调研分析报告》。华为投资控股有限公司、苏宁控股集团有限公司、正威国际集团…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 5丨至少有5名直接下属的经理【难度中等】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

全球数字经济十大发展趋势

来源&#xff1a;CIE智库摘要&#xff1a;当前&#xff0c;信息网络技术加速创新&#xff0c;以数字化的知识和信息作为关键生产要素的数字经济蓬勃发展&#xff0c;新技术、新业态、新模式层出不穷&#xff0c;成为“后国际金融危机”时代全球经济复苏的新引擎。当前&#xff…

数据结构之二叉树的遍历

二叉树的遍历分为前序遍历&#xff0c;中序遍历&#xff0c;后序遍历&#xff0c;层序遍历&#xff0c;在本文中&#xff0c;前三种由递归实现&#xff0c;层序遍历由队列实现。 #include "stdio.h" #include "stdlib.h" #include "windows.h" …

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 5丨员工奖金【难度简单】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

从换脸到换姿势,AI 在图像处理的道路上越走越魔幻

来源&#xff1a;专知加州大学伯克利分校的研究人员&#xff0c;近日在著名预印本网站 arXive 上&#xff0c;发布了最新的图像迁移成果&#xff1a;人体姿势和舞蹈动作迁移。旨在把专业舞蹈演员的动作迁移到不会跳舞的人身上&#xff0c;算法输出流畅&#xff0c;还原度极高。…