安卓开发-基础知识补习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}
      
  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;}
      }
      

      封装的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;
          }
      }
      

      使用

      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);
      }
      

🔍三、

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

📌内容总结:

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


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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NoSuchManException

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值