第二十五节课
http
.HTTP ( Hyper Text Transfer Protocol)
协议即超文本传输协议,它规定了浏览器和万维网服务器之间互相通信的规则。
从图中可以看出,使用手机客户端访问百度时,会发送一个HTTP请求。当服务器端接收到这个请求后,会做出响应并将百度页面返回给客户端
浏览器。这个请求和响应的过程实际上就是HTTP通信的过程。
·一次HTTP请求的过程
·建立连接-→发送请求-→处理请求-→返回数据-→发送请求2-……关闭连接
.HTTP请求的常用方式
GET
. POST
.HTTP请求的格式
请求行
请求头
·请求体
HTTP响应的格式
响应行(包含响应码:200404500302)。
响应头
·响应体
GET方式和POST方式提交数据
- HITP/1.1协议中共定义了八种方法来表明Request-URI指定的资源的不同操作方式。其中最常用的两种请求方式是GET和POST。
- GET方式与POST方式的区别
- GET方式以实体的方式得到由请求URL所指向的资源信息,向服务器提交
的参数跟在请求URL后面。使用GET方式访问网络UAL的长度是有限制的。请求URL的长度耍小于1K。 - POST方式用来向目的服务器发出请求.要求它接收被附在请求后的实体。它向服务器我交的参数在请求后的实体中,POST方式对URL的长度是没有限制的
使用HttpConnection - URL:包含请求地址的类
-tRil(path):包含请求路径的构造方法- openConnectionO:很到连接对象
2.HttpURLConnection:代表与服务器连接的类
- setRequestMethod(“GET/POST" ):设置请求方式
setDoInput (true/ false):设置可以读取服务器瑞返回的数据
setDo0utput(true/false):设置可以向服务器芒写入数据
setConnectTimeout(time):设置连接超时时间,单位为ms
setReadTimeout (time):设置读取服务器返回数据的时间-connecto :连接服务器 - int getResponseCodeO:得到服务器返回的结果码
Int getContentLengthO:得到服务器返回数据的长度(字节)getOutputStreamO:返回一个指向服务器端的数据输出流
getInputStreamo:返画一个从服务器端返回的致据输入流
disconnectO :断开连接
1.HttpURLConnection
<?xm1 version="1.0"" encoding="utf-8""?>
<network-security-config>
<domain-config>
<domain includesubdomains="true"">https : / /www.baidu.com/</domain>epin-set expiration="2020-08-01"">
pin digest="SHA-256"">7HIpactkIAq2Y49orFOoQKurwxmmSFzhBcoQvcRh33Y=</pin><!-- backup pin -->
pin digest=""SHA-256">fwzaOLRMKouZHRC8E1+4Pyu1dPDcf3uKgo/04cDM1oE=</pin></pin-set>
</domain-config>
</network-security-config>
Handler消息机制
·在使用手机下载软件时,通常都能在界面上看到一个下载的进度条,这个进度条用来表示当前下载的进度。但是Android4.0以后不能在UI线程访问网络,而子线程也不能更新UI界面。为了根据下载进度实时更新UI界面,就需要用到Handler消息机制来实现线程间的通信。
- Handler机制主要包括四个关键对象,分别是:Message、Handler、
MessageQueue、Looper。 - Handler
- Handler主要用于发送消息和处理消息。一般使用Handelr对象的
sendMessage()方法发送消息,消息经过一系列处理后,最终会传递到Handler的handlerMessage()方法中。
·发送即时消息: sendMessage(Message msg)
·发送延时消息: sendMessageDelayed(Message msg, long time)·处理消息: handleMessage(Message msg)(回调方法)
·移除还未处理的消息: removeMessages[int what)
MessageQueue - MessageQueue是消息队列的意思,它主要用来存放通过Handler发送的消息。通过Handler发送的消息会存在MessageQueue中等待处理。它是一个按Message的when排序的优先级队列。(when:代表着被处理的时间)
Looper - Looper是每个线程中的MessageQueue的管家。调用Looper的loop()方法后,就会进入到一个无线循环中。然后一发现MessageQueue中存在一条消息,就会将它取出,并传递到Handler的HandlerMessage()方法中。
·使用Handler的一般步骤
1.创建Handler成员变量对象,并重写其handleMessage()2.在分/主线程创建Message对象
3.使用handler对象发送Message学
4.在handleMessage()中处理消息
Handler消息处理首先需要在线程创建一handler对象,然后在子线程中调用Hanlder的sendMessage()方法,接着这个消息会存放在UI线程的MessageQueue中,通过Looper对象取出MessageQueue中的消息,最后分发回Hanlder的handleMessage()方法中。