• 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

  • 相关阅读:
    Heidisql导入导出SQL脚本
    递归遍历删除children为[]的children
    将v-model的值绑定到vuex中时遇到的问题及解决办法(computed替代watch)
    为什么不建议v-for和v-if一起使用
    vue全选和取消全选的实现方式(主要是理解computed中的set和get)
    全部设置为仅查看/可编辑【第三种方法:computed】
    全部设置为仅查看/可编辑【第二种方法:watch+methods】
    全部设置为仅查看/可编辑【第一种方法:watch】
    v-model的三个修饰符
    在表单元素上使用v-model的注意事项
  • 原文地址:https://www.cnblogs.com/xym4869/p/8477656.html
Copyright © 2020-2023  润新知