《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开发进阶从小工到专家》读书笔记--网络框架的设计与实现
《android开发进阶从小工到专家》读书笔记--HTTP网络请求的更多相关文章
- Androidproject师进阶之路 :《Android开发进阶:从小工到专家》上市啦!
封面 文件夹1 文件夹2 - 当当购买链接 - 京东购买链接 为什么写这本书 写这本书的念头由来已久了. 或许是从我打算写<Android源代码设计模式解析与实战>那时起就萌生了这个念头, ...
- 《android开发进阶从小工到专家》读书笔记--网络框架的设计与实现
第一步: 第一层:Request--请求类型,JSON,字符串,文件 第二层:消息队列--维护了提交给网络框架的请求列表,并且根据响应的规则进行排序.默认情况下按照优先级和进入队列的顺序来执行,该队列 ...
- Android开发进阶从小工到专家之性能优化
- 推荐扔物线的HenCoder Android 开发进阶系列 后期接着更新
官网地址:http://hencoder.com/ 我来做一次辛勤的搬运工 HenCoder:给高级 Android 工程师的进阶手册 HenCoder Android 开发进阶: 自定义 View ...
- 【山外笔记-云原生】《Docker+Kubernetes应用开发与快速上云》读书笔记-2020.04.25(六)
书名:Docker+Kubernetes应用开发与快速上云 作者:李文强 出版社:机械工业出版社 出版时间:2020-01 ISBN:9787111643012 [山外笔记-云原生]<Docke ...
- android开发进阶学习博客资源
Android开发者博客推荐 Android入门级 - 罗宪明 http://blog.csdn.net/wdaming1986 Android入门级 - 魏祝林 http://blog.csdn.n ...
- Android开发进阶:如何读写Android文件
Android主要有四大主要组件组成:Activity.ContentProvider.Service.Intent组成.Android文件的运行主要需要读写四大组件的文件.本文将介绍如何读写Andr ...
- Android开发进阶——自定义View的使用及其原理探索
在Android开发中,系统提供给我们的UI控件是有限的,当我们需要使用一些特殊的控件的时候,只靠系统提供的控件,可能无法达到我们想要的效果,这时,就需要我们自定义一些控件,来完成我们想要的效果了.下 ...
- Android开发进阶 -- 通用适配器 CommonAdapter
在Android开发中,我们经常会用到ListView 这个组件,为了将ListView 的内容展示出来,我们会去实现一个Adapter来适配,将Layout中的布局以列表的形式展现到组件中. ...
随机推荐
- linkin大话设计模式--简单工厂
linkin大话设计模式--工厂方法 什么是工厂方法:将多个类对象交给工厂来生成的设计被称为简单工厂模式,个人认为主要是为了实现解耦,在代码重构的时候会很重要. 代码如下: public class ...
- Java与C/C++的区别
首先应该清楚,Java是由C++发展而来的,它保留了c++的大部分内容,类似于c++,但句法更清晰,规模更小,更易学.它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之 ...
- ClearCase创建视图与基本命令
1.创建和设置view cleartool mkview -tag King_dev /home/King/King_dev.vws cleartool setview King_dev 2.删除V ...
- GDB 的使用
gdb使用: 1.编译时必须加-g选项,生成调试需要的信息.如 g++ xxx.cpp -o xxx -g 2.调试最好结合core文件 3.调试命令:gdb xxx x ...
- getRequestDispatcher()和response.sendRedirect()
request.getRequestDispatcher()是请求转发,前后页面共享一个request response.sendRedirect()是重新定向,前后页面不是一个request.
- CSS中设置border:none和border:0的区别
在我们设置CSS的时候,对标签元素不设置边框属性或者取消边框属性一般设置为:border:none;或border:0;两种方法均可. border:none;与border:0;的区别体现有两点:一 ...
- mysql数据库表字段使用DESC等关键字报错及解决方法
<!-- desc是MySQL数据库的关键字,作为字段名直接使用会报错 --><sql id="Base_Column"> id,mol,ip,port,n ...
- Javascript的异步和回调
介绍JavaScript的一些同步.异步.单线程多线程,回调基本概念:https://segmentfault.com/a/1190000002999668
- vc++调用web服务传输文件
bool webService::UploadFile(LPWSTR appKey, LPWSTR fileName, const int len, unsigned char * buff) { t ...
- 利用QuickCHM制作chm
CHM是一种常见的帮助文件格式,也是电子书的一种格式. 下面是使用QuickCHM制作chm的步骤: 1.先将所有的word文档存储为mht格式,点击,文件--另存为网页,如下 2.确保所有的word ...