Android网络,笔记!

Socket

套接字,本质是Java中的一个用于网络通讯
的类封装了ip地址、端口号和connext方法

Socket编程基本架构:

~*服务端

 ServerSocket ss = new ServerSocket(port);  //port:端口号   
 Socket socket = ss.accept(); //接收客户端的连接请求   
 socket.getOutputStream(); 
 socket.getInputStream();

~*客户端

 String ip = "ip地址";
 int port = 服务端port;
 Socket socket = new Socket(ip,port);
 socket.getOutputStream();
 socket.getInputStream();

~*同一个服务器端接收多个客户端发送的请求:*

 while(true){
 Socket socket = ss.accept();  
 ...  }

~*同一个服务器端并发处理多个客户端发送的请求:*

 while(true){
 Socket socket = ss.accept();
 new WorkThread(socket).start();
 }
 class WorkThread extend Thread{
 private Socket socket;
 public WorkThread(Socket socket){
 this.socket = socket;
 }
 public void run(){
 socket.getInputStream();
 socket.getOutStream();
 socket.close();
 }}

JSP (java服务端页面生成技术)

  • JSP本质:是一个java类
  • 运行原理:
    • 客户端发送http请求访问一张jsp、服务端将会根据jsp生成一个java类、把客户端的请求交给该类,执行生命周期方法、
  • 编写JSP:
    • 创建动态的web项目指定(Tomcat)、在WebContent目录下创建jsp文件、在jsp文件中编写文本、打包(项目右键export)、部署(把war文件粘贴到tomcat/webapps目录下即可)、重启Tomcat、访问(http:127.0.0.1:8080/…)
  • JSP文件组成部分:

    • jsp指令:<%@ page language=”java” contentType=”text/html; charset=utf-8”pageEncoding=”utf-8”%>
    • 普通文本:JSP将会把页面中的普通文本翻译成:
      out.write(“Hello”);
      out.write(“World”);
      out.write(“!”);
    • java代码片段:JSP中允许我们编写Java代码。
      <% int i=0; %>
      这些Java源代码会直接搬到.java
      源文件中。
    • jsp表达式:<%=now%>
      在普通文本中的任意一个位置输出
      Java表达式的值。
HTTP协议(超文本传输控制协议)

定义了客户端与服务端的通讯过程及数据交互的格式;

通讯过程:HTTP协议是一款基于短连接的协议,基于HTTP的请求时无状态的,因此有时需要做HTTP的状态管理

数据包的格式

·请求数据包(请求行、若干消息头、请求实体)

·响应数据包(状态行、若干消息头、响应实体)

GET与POST请求的区别
·请求数据包中的参数存放的位置
  GET:请求资源路径后面?拼接
  POST:请求数据包实体部分
·安全性(GET:相对不安全 POST:相对安全)
·是否适合传递中文(GET:不适合 POST:适合)
·是否适合大数据量数据提交(GET:不适合  POST:适合)
Android应用如何发送HTTP GET请求

·~~1.创建URL(统一资源定位符)对象.指定目标地址

·~~2.通过URL对象开启连接.获取HttpURLConnection conn = (HttpURLConnection) url.openConnection();、

·~~3.设置请求方式为GET、

·~~4.调用conn.getInputStream()获取输入流,读取服务端返回的数据、

·~~5.处理输入流,获取服务端返回的字符串

Android应用如何发送HTTP POST请求

·~~1.创建URL对象

·~~2.开启连接openConnection()

·~~3.设置请求方式POST

·~~4.对conn进行发送post请求的基本设置
conn.setDoInput(true)
conn.setDoOutput(true)
//设置消息头
conn.setRequestProperty(“Content-Type”,”application/x-www-form-urlencoded”);

·~~5.向服务端传递参数(写数据)
os=conn.getOutputStream();
String param=”d=2016-04-04&number=No.100011”;
os.write(param.getBytes(“utf-8”));

·~~6.发送请求并且获取输入流
解析输入流(响应)

XML描述用户:
<user>
  <name>zs</name>
  <age>23</age>
  <gender>m</gender>
  <aihao>吃</aihao>
  <aihao>喝</aihao>
  <aihao>玩</aihao>
  <aihao>乐</aihao>
  <school>
<name>tarena</name>
<loc>bj</loc>
  </school>
</user>


JSON描述一个用户:
String str={
  "name":"zs",
  "age":23,
  "gender":"m",
  "aihao":["c","h","w","l"],
  "school":{
"name":"tarena",
"loc":"bj"
  }
};

·JSON是一款轻量级的数据交换格式

·android如何解析JSON字符串

解析JSONObject:
 JSONBObject obj = new JSONBObject(str);
HTTP的状态管理

基于HTTP协议的请求是无状态的-即短连接。

如何实现HTTP的状态管理?

A)Cookie机制(把涉及到的数据保存到客户端)

执行原理:

1.客户端向服务端发送http请求,服务端返回个客户端响应数据,并在响应数据中携带cookie信息(Set-Cookie:…)

2.客户端接收响应数据包,解析响应,获取cookie信息并保存

3.在客户端发送后续请求时,需要在请求数据包中携带cookie信息

4.服务端接收请求,并且解析请求数据包中的cookie信息,执行后续业务

Cookie的限制:不能存储中文、不能存储大数据量数据、安全性低。

B)Session机制(把涉及到的数据保存到服务端)

实现原理:

1.客户端发送http请求,服务端把需要保存的数据保存在session对象中,并且把JSID以Cookie的方式传递给客户端

2.客户端接收服务端响应数据包,并且把Cookie保存在客户端中

3.客户端发送请求后,需要在请求数据包中以cookie的形式传递JSESSIONID

XML解析
  • DOM解析:

    • 解析方式~将整篇XML文档装到内存当中,形成树形结构。可以使用DOM相关的API进行增删改查
    • 解析XML文档:
      • SAXReader
  • SAX解析:

  • PULL解析:

    • 解析方式~使用事件驱动的方式解析XML文档,不会将整篇文档都装入内存
    • 解析XML文档:
      • 1.创建Xmlpullparser解析器
      • 2.setInput()
      • 3.驱动事件
        不断向后驱动事件:eventType=parser.next();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值