• 安卓开发-基础知识补习6


    听说点赞关注的人,身体健康,万事如意,工作顺利,爱情甜蜜,一夜暴富,升职加薪……最终迎娶白富美!!!


    ‼️微信公众号:炜煜工作室

    🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱

    📡 :安卓开发-基础知识补习6💯

    📰内容简介:

    本文介绍了安卓中客户端与服务器端交互的一点基础知识,以及JSON的一些基础知识,demo使用java代码进行开发,如果有问题的地方请不吝指教,如果对文内内容有不理解的地方,也希望能积极主动的联系博主进行深刻的探讨,以便于让博主更深刻的记住这篇博文的内容,好让博主在发光发热的道路上越走越远。[手动狗头]🐶努力,奋斗!

    📎 标签:安卓;java;客户端;服务器;JSON;

    🔍一、Android客户端与服务器端的交互

    HTTP

    1. HTTP(Hypertext Transfer Protocol):超文本传输协议是Web联网的基础,也是手机联网常用的协议之一。HTTP也称为无状态的通信协议。
    2. 由于HTTP再每次请求i而术后都会主动释放连接,因此HTTP连接是一种”短链接“,”无状态“,要保持客户端程序的在线状态,需要不断得向服务器发起连接请求。通常的做噶是即使不需要获得任何数据,客户端也要保持每隔一段固定的时间向服务器发送一次”保持连接“的请求;服务器再收到该请求后对客户端进行回复,表明知道客户端”在线“。若服务器长时间无法收到客户端的请求,则认为客户端”下线“;若客户端长时间无法接收到服务器的回复,则人为网络已经断开。
    3. HTTP的特点
      1. 简单快速;
      2. 灵活
      3. 无连接
      4. 无状态
    4. HTTP中的8种方法
      1. OPTIONS,HEAD,GET,POST,PUT,DELETE,TARGET,CONNECT。其中最常用的就是GET和POST方法。
      2. GET和POST的区别
        1. GET是用来从服务器获得数据,而POST是用来向服务器传递数据。GET将要传递的数据按照”键值“的形式,添加到URL的后面,并且两者使用”?“连接,而多个变量之间使用“&”连接。
        2. POST是将传递的数据放在请求的数据体中,不会在URL中显示。
        3. GET请求是不安全的。
        4. GET传输的数据量小。
        5. 现在GET请求多数用在不需要请求参数或者请求参数固定的地方。

    .🔍二、JSON

    1. 接口组成示例

      1. 一个完整的接口请求一般由4个部分构成,当然哟许欸请求可能不需要返回或者不需要验证,序号要的东西会少一些。
        1. 请求参数:网络请求是传给服务器的数据。
        2. 请求地址:接口的地址,通常情况下是一串HTTP地址,由IP,端口号,服务名,应用名,具体的接标识构成。
        3. 请求头:请求头是为了减轻服务器负担而设计。
        4. 返回参数:返回参数是得到的数据。一般由响应码,相应信息,返回数据。
    2. JSON格式数据

      1. JSON(JavaScript Object Notation)是一种数据交互格式。JSON之前,大家都用XML传递数据。
    3. JSON格式的数据举例

      1. JSON格式的数据本质是字符串,其主要是key:value,也就是键和值的方式组合的。有点儿类似字典数据类型的数据。{}里面的表示一个对象,[]里面表示一个数组,key:value可以理解为对象中的属性和值。

      2. {"name":"Jhon","age":14,"sex":0}
        
        • 1
    4. JSON的简单使用

      1. Person实体类

        public class Person implements Serializable {
            private String name;
            private int age;
            private boolean sex;
            private double weight;
            public Person() {}
            public Person(String name, int age, boolean sex, double weight) {
                this.name = name;
                this.age = age;
                this.sex = sex;
                this.weight = weight;}
            @Override
            public boolean equals(Object o) {
                if (this == o) return true;
                if (o == null || getClass() != o.getClass()) return false;
                Person person = (Person) o;
                return age == person.age && sex == person.sex && Double.compare(person.weight, weight) == 0 && Objects.equals(name, person.name);
            }
            @Override
            public String toString() {
                return "Person{" +
                        "name='" + name + '\'' +
                        ", age=" + age +
                        ", sex=" + sex +
                        ", weight=" + weight +
                        '}'; }
            @Override
            public int hashCode() {
                return Objects.hash(name, age, sex, weight); }
            public String getName() {
                return name;}
            public void setName(String name) {
                this.name = name;}
            public int getAge() {
                return age;}
            public void setAge(int age) {
                this.age = age; }
            public boolean isSex() {
                return sex;}
            public void setSex(boolean sex) {
                this.sex = sex;}
            public double getWeight() {
                return weight;}
            public void setWeight(double weight) {
                this.weight = weight;}
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
        • 25
        • 26
        • 27
        • 28
        • 29
        • 30
        • 31
        • 32
        • 33
        • 34
        • 35
        • 36
        • 37
        • 38
        • 39
        • 40
        • 41
        • 42
        • 43
        • 44
        • 45
        • 46

        封装的JSONUtils类;

        import com.google.common.reflect.TypeToken;
        import com.google.gson.Gson;
        import com.google.gson.JsonIOException;
        import com.google.gson.JsonObject;
        
        import java.lang.reflect.Type;
        import java.util.ArrayList;
        
        public class JsonUtil { //单例引用
            public static JsonUtil instance;
            private static Gson gson;
        
            public static JsonUtil getInstance() {
                if (instance == null) {
                    synchronized (JsonUtil.class) {
                        if (instance == null) {
                            instance = new JsonUtil();
                            synchronized (Gson.class) {
                                gson = new Gson();
                            }
                        }
                    }
                }
                return instance;
            }
            public <T> String beanToJsonStr(T t) {      //将对象转换为JSON的字符串
                String str = "";
                if (t != null) {
                    str = gson.toJson(t);
                }
                return str;
            }
            public <T> T json2Bean(String jsonStr, Class<T> tClass) {       //将JSON格式的字符串转换为对象
                T t = null;
                if (jsonStr != null) {
                    try {
                        t = gson.fromJson(jsonStr, tClass);
                    } catch (JsonIOException e) {
                    }
                }
                return t;
            }
            public static <T> ArrayList<T> json2ArrayList(String json, Class<T> clazz) {
                //将JSON的字符串转换为对象数组
                Type type = new TypeToken<ArrayList<JsonObject>>() {
                }.getType();
                ArrayList<JsonObject> jsonObjects = new Gson().fromJson(json, type);
                ArrayList<T> list = new ArrayList<>();
                for (JsonObject jsonObject:
                    jsonObjects) {
                    list.add(new Gson().fromJson(jsonObject, clazz));
                }
                return list;
            }
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
        • 25
        • 26
        • 27
        • 28
        • 29
        • 30
        • 31
        • 32
        • 33
        • 34
        • 35
        • 36
        • 37
        • 38
        • 39
        • 40
        • 41
        • 42
        • 43
        • 44
        • 45
        • 46
        • 47
        • 48
        • 49
        • 50
        • 51
        • 52
        • 53
        • 54
        • 55

        使用

        public class JSONTest {
            Person person = new Person("jack",18,false,52.3);
            String jsonStr = JsonUtil.getInstance().beanToJsonStr(person);
            Person person2 = JsonUtil.getInstance().json2Bean(jsonStr,Person.class);
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5

    🔍三、

    🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱

    📌内容总结:

    :clock1030本文介绍了安卓中客户端与服务器端交互的一点基础知识,以及JSON的一些基础知识,还有🐛没有写到本文内,后续内容可以继续追踪博主的后续文章,或许会介绍相关的内容,如果没介绍,请用力踢一脚,好让摸鱼的博主积极主动的去认识错误并及时改正,在发光发热的道路上越走越远……


    表情网站:[🎁 Emoji cheat sheet for GitHub, Basecamp, Slack & more (webfx.com)](

  • 相关阅读:
    nodejs+vue临沂特色产品销售平台elementui
    Oracle-子查询
    Movicon软件
    力扣上《将数字变成0的操作次数》这道题num & 0x01和num >>= 1的讲解
    Mysql8与mariadb的安装与常用设置
    电脑出现错误vcomp140.dll是什么情况?vcomp140.dll丢失怎样修复?
    Linux中的dpkg指令(dpkg -l | grep XXX等)
    分享9个加快houdini渲染的技巧,快来学习一下
    iPayLinks艾贝盈上线澳大利亚、印尼本地收款账户,助力企业紧抓RCEP机遇
    基于Java毕业设计音乐管理系统源码+系统+mysql+lw文档+部署软件
  • 原文地址:https://blog.csdn.net/weixin_44402395/article/details/127432709