听说点赞关注的人,身体健康,万事如意,工作顺利,爱情甜蜜,一夜暴富,升职加薪……最终迎娶白富美!!!
‼️微信公众号:炜煜工作室
🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱🐱
📡 :安卓开发-基础知识补习6💯
📰内容简介:
本文介绍了安卓中客户端与服务器端交互的一点基础知识,以及JSON的一些基础知识,demo使用java代码进行开发,如果有问题的地方请不吝指教,如果对文内内容有不理解的地方,也希望能积极主动的联系博主进行深刻的探讨,以便于让博主更深刻的记住这篇博文的内容,好让博主在发光发热的道路上越走越远。[手动狗头]🐶努力,奋斗!
📎 标签:安卓;java;客户端;服务器;JSON;
🔍一、Android客户端与服务器端的交互
HTTP
- HTTP(Hypertext Transfer Protocol):超文本传输协议是Web联网的基础,也是手机联网常用的协议之一。HTTP也称为无状态的通信协议。
- 由于HTTP再每次请求i而术后都会主动释放连接,因此HTTP连接是一种”短链接“,”无状态“,要保持客户端程序的在线状态,需要不断得向服务器发起连接请求。通常的做噶是即使不需要获得任何数据,客户端也要保持每隔一段固定的时间向服务器发送一次”保持连接“的请求;服务器再收到该请求后对客户端进行回复,表明知道客户端”在线“。若服务器长时间无法收到客户端的请求,则认为客户端”下线“;若客户端长时间无法接收到服务器的回复,则人为网络已经断开。
- HTTP的特点
- 简单快速;
- 灵活
- 无连接
- 无状态
- HTTP中的8种方法
- OPTIONS,HEAD,GET,POST,PUT,DELETE,TARGET,CONNECT。其中最常用的就是GET和POST方法。
- GET和POST的区别
- GET是用来从服务器获得数据,而POST是用来向服务器传递数据。GET将要传递的数据按照”键值“的形式,添加到URL的后面,并且两者使用”?“连接,而多个变量之间使用“&”连接。
- POST是将传递的数据放在请求的数据体中,不会在URL中显示。
- GET请求是不安全的。
- GET传输的数据量小。
- 现在GET请求多数用在不需要请求参数或者请求参数固定的地方。
.🔍二、JSON
-
接口组成示例
- 一个完整的接口请求一般由4个部分构成,当然哟许欸请求可能不需要返回或者不需要验证,序号要的东西会少一些。
- 请求参数:网络请求是传给服务器的数据。
- 请求地址:接口的地址,通常情况下是一串HTTP地址,由IP,端口号,服务名,应用名,具体的接标识构成。
- 请求头:请求头是为了减轻服务器负担而设计。
- 返回参数:返回参数是得到的数据。一般由响应码,相应信息,返回数据。
- 一个完整的接口请求一般由4个部分构成,当然哟许欸请求可能不需要返回或者不需要验证,序号要的东西会少一些。
-
JSON格式数据
- JSON(JavaScript Object Notation)是一种数据交互格式。JSON之前,大家都用XML传递数据。
-
JSON格式的数据举例
-
JSON格式的数据本质是字符串,其主要是key:value,也就是键和值的方式组合的。有点儿类似字典数据类型的数据。{}里面的表示一个对象,[]里面表示一个数组,key:value可以理解为对象中的属性和值。
-
{"name":"Jhon","age":14,"sex":0}
-
-
JSON的简单使用
-
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)](