Android网络请求知识(一)HTTP基础概念

报文格式

1. 请求报文

请求行:请求方法+路径+版本号
请求头:host,User-Agent等。下面具体介绍
请求体:内容

GET https://www.baidu.com/ HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Linux; Android 7.0; m3 note) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Mobile Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9

ip=172.56.168.66&imei=86521684611
2. 响应报文

状态行:版本号+状态码+状态信息
响应头:Content-Type,Content-Length等
响应体:返回内容

HTTP/1.1 200 OK
Server: nginx/1.8.1
Date: Thu, 03 Jan 2019 07:31:02 GMT
Content-Type: text/plain;charset=UTF-8
Content-Length: 93
Connection: keep-alive
Accept-Charset: big5, big5-hkscs, euc-jp, euc-kr, gb18030, gb2312, gbk, ibm-thai, ibm00858, ibm01140, ibm01141

{"adlist":{"kaiping":{"ad":{}},"yunying":{"ad":{}}},"showadtime":"10","getadlisttime":"1200"}

请求方法和响应码以及Header

1. Request Method请求方法

GET 获取资源,没有body
POST 增加或修改资源,有body
PUT 修改资源,有body(GET和PUT是幂等执行多次和一次是一样的,post增加多次就会有多个增加)
DELETE 删除资源,没有body
HEAD 和GET几乎相同,但是不返回body,一般用于下载前看看下载内容是否存在,大小,是否支持断点续传

2. 响应状态码

1xx:临时性消息 100(继续发送),101(正在切换协议)Upgrade:h2c 返回101用HTTP2,发回200还用http/1.1
2xx:200成功 201创建成功
3xx:重定向 301(永远移动)302(暂时移动)304(内容未改变)缓存问题
4xx:客户端错误 400(Bad Request请求错误,参数不对等),401(认证失败,未登录等),403(内容被禁止,访问权限,访问授权问题),404(内容找不到)
5xx:服务器错误

3. Header(http消息的元数据)
  • host:服务器主机地址 不是网络上用于寻址(DNS),而是目标服务器上用于定位子服务器
  • content-length:指Body长度(主要用于二进制数据,确定内容长度)
  • content-type:
    1.text/html 请求web页面的返回响应类型,Bady中返回html文本
    2.application/x-www-form-urlencoded 纯文本普通表单
    3.multitype/form-data 含有二进制内容的提交方式
    4.application/json 用于web Api的响应或者post/put的请求
    5.image/jpg application/zip 提交单文件 (网页不常用)
  • Transfer-Encoding:chunked 用于当响应发起时,内容长度还没有确定下来,用途是尽早给出响应,减少用户等待。最后传输0表示传输介绍
  • Location: 指定重定向的url地址,请求http://www.baidu.com重定向到https://www.baidu.com
HTTP/1.1 307 Internal Redirect
Location: https://www.baidu.com/
Non-Authoritative-Reason: HSTS
  • User-Agent:用户代理,实际发送请求,接受响应的浏览器和手机。(返回手机页面还是pc页面)
  • Accept-Range:byte 响应报文中出现,表示服务器支持分段下载
  • Range: bytes=0-15000 请求报文中出现,表示要取那段数据
    (Range/Accept-Range作用:断点续传,多线程下载)
  • Content-Range:<start>-<end>/total 响应报文中出现,表示发送的是那段数据
  • Accept: 通知服务器,用户代理能够处理的媒体类型以及媒体类型的相对优先级
  • Accept-Charset:通知服务器用户代理支持的字符集及字符集的相对优先顺序
  • Accept-Encoding:告知服务器用户代理支持的内容编码及内容编码的优先级顺序
  • Accept-Language:告知服务器用户代理能够处理的自然语言集(指中文或英文等),以及自然语言集相对优先级。
  • Content-Encoding:响应报文中压缩类型
  • Cache 在客户端或中间网络节点缓存数据,降低从服务器取数据的频率,提高网络性能
  • Cache-Control:缓存响应指令 no-cache(下次使用时,询问一下),no-store(不要缓存),max-age(未过期直接使用) public (可向任意一方提供响应缓存)private (仅向特定用户返回响应)
  • Last-Modified:服务器返回一个过期时间
  • If-Modified-Since:客户端请求时带上这个时间
  • Etag: 服务器发回来一个唯一标志符
HTTP/1.1 304 Not Modified
Cache-Control: max-age=0, must-revalidate
Date: Thu, 03 Jan 2019 08:22:51 GMT
Etag: 2098a650d25ba787abb9038281fd287a
  • If-None-Match :请求时带上这个唯一标志符
GET /hm.js?0c0e9d9b1e7d617b3e6842e85b9fb068 HTTP/1.1
Host: hm.baidu.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
Accept: */*
Referer: https://www.jianshu.com/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
If-None-Match: 2098a650d25ba787abb9038281fd287a
  • Cache-Control:private(中间节点不能缓存数据,个性信息)/public(中间节点能缓存数据,公有信息)


    使用缓存过程.png

Android网络请求知识(一)HTTP基础概念
Android网络请求知识(二)对称和非对称加密、数字签名,Hash,Base64编码
Android网络请求知识(三)授权,TCP/IP,HTTPS建立过程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,104评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,816评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,697评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,836评论 1 298
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,851评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,441评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,992评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,899评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,457评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,529评论 3 341
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,664评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,346评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,025评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,511评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,611评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,081评论 3 377
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,675评论 2 359

推荐阅读更多精彩内容