zoukankan      html  css  js  c++  java
  • 《android开发进阶从小工到专家》读书笔记--HTTP网络请求

    No1:

    客户端与服务器的交互流程:

    1)客户端执行网络请求,从URL中解析出服务器的主机名

    2)将服务器的主机名转换成服务器的IP地址

    3)将端口号从URL中解析出来

    4)建立一条从客户端与Web服务器的TCP连接

    5)客户端通过输出流向服务器发送一条HTTP请求

    6)服务器向客户端回送一条HTTP响应报文

    7)客户端从输入流获取报文

    8)客户端解析报文,关闭连接

    9)客户端将结果显示在UI上

    No2:

    HTTP请求方式:

    1)GET

    获取服务器中某个资源,www.devtf.cn/articles/123.html?username=myname&userid=123

    2)POST

    通常会会用来提交HTML的表单

    3)PUT

    会向服务器写入资源

    4)DELETE

    请求服务器删除请求URL所指定的资源。但是,客户端应用程序无法保证删除操作一定会被执行。因为,HTTP规范允许服务器在不通知客户端的情况下撤销请求。DELETE方式和GET请求一样,参数都需要放在请求的URL中。

    5)HEAD

    与GET方法行为很类似,但服务器在响应中只返回首部,不会返回实体的主体部分。这就允许客户端在未获取实际资源的情况下,对资源的首部进行检查。

    6)TRACE

    TRACE请求会在目的服务端发起一个“环回”诊断。行程最后一站的服务器会弹回一条TRACE响应,并在响应主体中携带它收到的原始请求报文。这样客户端就可以查看在所有中间HTTP应用程序组成的请求/响应链上,原始报文是否以及如何被毁坏或修改过。

    主要用于诊断,即用于验证请求是否如愿穿过了请求/响应链

    7)OPTIONS请求

    OPTIONS方法请求Web服务器告知其支持的各种功能。可以询问服务器通常支持哪些方法,或者对某些特殊资源支持哪些方法(有些服务器可能只支持对一些特殊类型的对象使用特定的操作)

    No3:

    一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成。

    HTTP响应也由3个部分组成,分别是:状态行、消息报头、响应正文。

    No4:

    常见状态代码、状态描述

    1)200 OK:客户端请求成功

    2)400 Bad Request:客户端请求有语法错误,不能被服务器所理解

    3)401 Unauthorized:请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用

    4)403 Forbidden:服务器收到请求,但是拒绝提供服务

    5)404 Not Fount:请求资源不存在,举个例子:输入了错误的URL

    6)500 Internal Server Error:服务器发生不可预期的错误

    7)503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)

    No5:

    HTTP要传送一条报文时,会以流的形式将报文数据的内容通过一条打开的TCP连接按序传输。TCP收到数据流之后,会将数据流分割成被称作段的小数据块,并将段封装在IP分组中,通过因特网进行传输。所有这些工作都是由TCP/IP软件来处理的,程序员什么都看不到。

    No6:

    android中提供了两种执行网络请求的方式,一种是使用Apache的HttpClient,另一种则是Java的HttpURLConnection。

    No7:

    HttpURLConnection的API简单,体积较小,它的压缩和缓存机制可以有效的减少网络访问的流量,在提升速度和省电方面也起到了较大的作用。

    在Android 6.0中,HttpClient库已经被移除。

    No8:

    一旦向输出流中写入了参数,那么请求方式则会变为POST,即使通过setRequestMethod函数将请求设置为“GET”。因为GET请求的参数是附在URL中的,因此,如果是GET请求,则不要在请求体中设置参数。

     《android开发进阶从小工到专家》读书笔记--网络框架的设计与实现

  • 相关阅读:
    一起写框架-MVC框架的概述(一)
    一起写框架-说在前面的话(一)
    一起写框架-Ioc内核容器的实现-对象的调用-@Bean注解注入容器的对象(十二)
    一起写框架-Ioc内核容器的实现-对象的调用-方法注入容器的对象(十一)
    一起写框架-Ioc内核容器的实现-对象的调用-属性注入容器的对象(十)
    一起写框架-Ioc内核容器的实现-基础功能-组件注解支持自定义的对象名(九)
    一起写框架-控制反转(Ioc)概述(二)
    一起写框架-Ioc内核容器的实现-基础功能-容器对象名默认首字母小写(八)
    一起写框架-Ioc内核容器的实现-基础功能-ComponentScan支持组件注解限制(七)
    一起写框架-Ioc内核容器的实现-基础功能-ComponentScan支持多包扫描(六)
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/8425979.html
Copyright © 2011-2022 走看看