Android开发日记(五) 连接服务器

今天服务器端的所有接口终于写好了, 用了半个小时把所有访问百度的链接都换成自己的服务器的接口地址, 主要问题有json数据的解析和处理url中含中文的情况

一、json数据解析

  1. 首先是教室数据, 这部分数据是一个json数组, 其中每一项都是一条教室数据, 而且设置ListView的时候已经写好了Room类, 最适合用google提供的GSON库来解析了

    1. 首先在app的build.gradle中导入GSON的库
    implementation 'com.google.code.gson:gson:2.2.4'
    
    1. 用法也是非常的简单
    Gson gson = new Gson();
    List<Room> roomListTmp = gson.fromJson(data1, new TypeToken<List<Room>>(){}.getType());
    roomList.clear();
    roomList.addAll(roomListTmp);
    
  2. 然后是其他的响应信息, 以获取用户信息为例, 这部分信息简短且结构不固定, 有响应状态字段, 例如:

{"station":"success",
 "info":{"Suser":"康纳","Stel":"11111111111","Semail":"111@qq.com"}
}

这样的数据就不用很麻烦的写一个类来存储了, 用Android提供的JSONObject来解析比较方便, JSONObject对象接收一个json字符串来初始化, 然后就可以用get方法根据key值获得value, 仍然是一个json字符串的value可以用来继续初始化JSONObject

String result = response.body().string();

    try{
        JSONObject data = new JSONObject(result);
        String station = data.getString("station");

        if (station.equals("success")){
            JSONObject userInfo = new JSONObject(data.getString("info"));
            final String userName = userInfo.getString("Suser");
            String userEmail = userInfo.getString("Semail");

            SharedPreferences.Editor editor = spf.edit();
            editor.putString("name", userName);
            editor.putString("email", userEmail);
            editor.apply();

            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    navUserName.setText(userName);
                }
            });
        }
    }catch (Exception e){
        Log.d("bug", e.toString());
    }
}

二、处理url中含中文的情况

get方式请求的url中含有中文时需要对其进行编码, 和服务器的编码方式一致

String nameInput = input.getText().toString();
String name = URLEncoder.encode(nameInput,"utf-8");
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值