Android开发知识

news2024/11/16 23:50:49

文章目录

  • HTTP
    • HTTP到底是什么
    • HTTP的工作方式
    • URL ->HTTP报文
    • List item
    • HTTP的工作方式
    • 请求报文格式:Request
    • 响应报文格式:Response
    • HTTP的请求方法
    • 状态码
    • Header
    • Host
    • Content-Type
    • Content-Length
    • Transfer: chunked (分块传输编码 ChunkedTransfer Encoding)
    • Location
    • User-Agent
    • Range / Accept-Range
    • 其他 Headers
    • Cache
    • REST

HTTP

HTTP到底是什么

  • 两种直观印象
    • 浏览器地址输入地址,打开网页
    • Android中发送网络请求,返回对应内容
  • Hyper Text Transfer Protocol超文本传输协议
    • 超文本:在电脑中显示的、含有可以指向其他文本的链接的文本 ——HTML

HTTP的工作方式

发送请求
响应
浏览器
服务器

URL ->HTTP报文

  • List item

HTTP的工作方式

发送请求
响应
APP
服务器

请求报文格式:Request

在这里插入图片描述

响应报文格式:Response

在这里插入图片描述

HTTP的请求方法

  • GET
    • 获取资源,没有body
GET /users/1 HTTP/1.1
Host: api.github.com
  • POST
    • 增加或修改资源,有body
POST /users HTTP/1.1
Host: api.github.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13
name=rengwuxian&gender=male
  • PUT
    • 修改资源,有body
POST /users HTTP/1.1
Host: api.github.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13
name=rengwuxian&gender=male
  • DELETE
    • 删除资源,没有body
POST /users HTTP/1.1
Host: api.github.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13
name=rengwuxian&gender=male
  • HEAD
    • 和 GET 使用方法完全相同
    • 和 GET 唯一区别在于,返回的响应中没有 Body

状态码

  • 作用:对结果做出类型化描述
    • 1xx:临时性消息。如:100 (继续发送)、101(正在切换协议)
    • 2xx:成功。最典型的是 200(OK)、201(创建成功)。
    • 3xx:重定向。如 301(永久移动)、302(暂时移动)、304(内容未改变)。
    • 4xx:客户端错误。如 400(客户端请求错误)、401(认证失败)、403(被禁
      止)、404(找不到内容)。
    • 5xx:服务器错误。如 500(服务器内部错误)

Header

  • 作用:HTTP消息的元数据(metadata)

Host

目标主机地址

Content-Type

指定 Body 的类型。主要有四类:

  1. text/html
    HTML文本,用于浏览器页面响应

请求 Web ⻚面是返回响应的类型,Body 中返回 html 文本。格式如下:

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 853
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
......
  1. x-www-form-urlencoded
    普通表单。encodeed URL格式
    Web ⻚面纯文本表单的提交方式。
    在这里插入图片描述
    格式如下:
POST /users HTTP/1.1
Host: api.github.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
name=rengwuxian&gender=male
  1. multipart/form-data
    多部分形式,一般用于传输包含二进制内容的多项内容
    Web ⻚面含有二进制文件时的提交方式。
    在这里插入图片描述
    格式如下:
POST /users HTTP/1.1
Host: hencoder.com
Content-Type: multipart/form-data; boundary=----
WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Length: 2382

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="name"

rengwuxian
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="avatar";
filename="avatar.jpg"
Content-Type: image/jpeg

JFIFHHvOwX9jximQrWa......
------WebKitFormBoundary7MA4YWxkTrZu0gW--
  1. application/json , image/jpeg , application/zip …
    JSON形式,用于Web Api的响应或POST/PUT的请求
    单项内容(文本或非文本都可以),用于 Web Api 的响应或者 POST / PUT 的请求

请求中提交 JSON

POST /users HTTP/1.1
Host: hencoder.com
Content-Type: application/json; charset=utf-8
Content-Length: 38

{"name":"rengwuxian","gender":"male"}

响应中返回JSON

HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
content-length: 234
[{"login":"mojombo","id":1,"node_id":"MDQ6VXNl
cjE=","avatar_url":"https://avatars0.githubuse
rcontent.com/u/1?v=4","gravat......

请求中提交二进制内容

POST /user/1/avatar HTTP/1.1
Host: hencoder.com
Content-Type: image/jpeg
Content-Length: 1575

JFIFHH9......

响应中返回二进制的内容

HTTP/1.1 200 OK
content-type: image/jpeg
content-length: 1575

JFIFHH9......
  1. image/jpeg/application/zip
    单文件,用于Web Api响应或POST/PUT请求

Content-Length

指定 Body 的⻓度(字节)。

Transfer: chunked (分块传输编码 ChunkedTransfer Encoding)

用于当响应发起时,内容⻓度还没能确定的情况下。和 Content-Length 不同时使用。用途是尽早给出响应,减少用户等待。
格式

HTTP/1.1 200 OK
Content-Type: text/html
Transfer-Encoding: chunked

4
Chun
9
ked Trans
12
fer Encoding
0

Location

指定重定向的目标 URL

User-Agent

用户代理(客户端),即是谁实际发送请求、接受响应的,例如手机浏览器、某款手机 App。

Range / Accept-Range

指定body的内容范围
按范围取数据
Accept-Range: bytes 响应报文中出现,表示服务器支持按字节来取范围数据
Range: bytes=<start>-<end> 请求报文中出现,表示要取哪段数据
Content-Range:<start>-<end>/total 响应报文中出现,表示发送的是哪段
数据
作用:断点续传、多线程下载。

其他 Headers

  • Accept: 客户端能接受的数据类型。如 text/html
  • Accept-Charset: 客户端接受的字符集。如 utf-8
  • Accept-Encoding: 客户端接受的压缩编码类型。如 gzip
  • Content-Encoding:压缩类型。如 gzip

Cache

作用:在客户端或中间网络节点缓存数据,降低从服务器取数据的频率,以提高网络性能。

REST

REST 的定义众说纷纭,没有统一答案。
扔物线的观点:REST HTTP 即正确使用 HTTP。包括:

  • 使用资源的格式来定义 URL
  • 规范地使用 method 来定义网络请求操作
  • 规范地使用 status code 来表示响应状态
  • 其他符合 HTTP 规范的设计准则

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1139208.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

双向链表的初始化、插入、删除

双向链表的初始化 双向链表的插入 双向链表的删除 我们可以看看这一题循环双向链表的题目 王道p40 17.设计一个算法用于判断带头结点的循环双链表是否对称&#xff08;c语言代码实现&#xff09;_认真敲代码的小火龙的博客-CSDN博客https://blog.csdn.net/m0_46702681/article…

Shiro整合EhCache

缓存工具EhCache EhCache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。可以和大部分Java项目无缝整合&#xff0c;例如&#xff1a;Hibernate中的缓存就是基于EhCache实现的。EhCache支持内存和磁盘存储&#xff0c;默认存储在内存中&#xff…

netcore webapi action 同时支持 get 和 post 请求

最近在项目开发过程中&#xff0c;有个别接口需要同时支持GET和POST请求&#xff0c;经过一番测试&#xff0c;貌似NetCore只能接收指定的FromBody、FromQuery等参数&#xff0c;经过一番查找后发现文章&#xff1a;为ASP.NET Core实现一个自适应ModelBinder&#xff0c;让Acti…

HackTheBox-Starting Point--Tier 1---Sequel

文章目录 一 题目二 实验过程 一 题目 Tags Vulnerability Assessment、Databases、MySQL、SQL、Reconnaissance、Weak Credentials译文&#xff1a;漏洞评估、数据库、MYSQL、SQL、侦察、凭证薄弱Connect To attack the target machine, you must be on the same network.C…

QT 中 Graphics View 程序例子-Diagram Scene Example

一、 概况 本例演示如何使用图形视图框架。 “图表场景”示例是一个应用程序&#xff0c;您可以在其中创建流程图。可以添加流程图形状和文本&#xff0c;并通过箭头连接形状&#xff0c;如上图所示。形状、箭头和文本可以赋予不同的颜色&#xff0c;并且可以更改文本的字体、…

HackTheBox-Starting Point--Tier 1---Crocodile

文章目录 一 题目二 实验过程 一 题目 Tags Web、Network、Custom Applications、Protocols、Apache、FTP、Reconnaissance、Web Site Structure Discovery、Clear Text Credentials、Anonymous/Guest Access译文&#xff1a;Web、网络、定制应用程序、协议、Apache、FTP、侦…

C++项目——云备份-③-实用工具类设计与实现

文章目录 专栏导读1.文件实用工具类的设计2.文件实用工具类的实现2.1前置知识补充2.1.1struct stat 与 stat介绍2.1.2std::experimental::filesystem认识 2.2FileUtil实现 3.JSON实用工具类的设计4.JSON实用工具类的实现5.实用工具类整理 专栏导读 &#x1f338;作者简介&#…

ESP32智能小车+PS2无线遥控器+麦克纳姆轮+microPython

from machine import Pin,PWM from ps2 import PS2Controller import time import os# ############################################# # PS2 遥控器 # ############################################# ps2ctl PS2Controller(di_pin_no26, do_pin_no27, cs_pin_no14, clk_pin…

Unity中Shader的模型网格阴影

文章目录 前言一、网格阴影原理1、在世界空间下&#xff0c;把角色模型在Y轴上压缩成一个面片&#xff0c;把颜色修改成像影子的颜色2、把压缩后的面片&#xff0c;移动到合适的位置&#xff0c;把模型和阴影面片错开3、实现距离脚近的阴影偏移少&#xff0c;距离脚远的阴影偏移…

【已解决】AttributeError: module ‘cv2‘ has no attribute ‘bgsegm‘

问题 使用cv2.bgsegm.createBackgroundSubtractorMOG()去除背景的时候&#xff0c;遇到如下问题&#xff1a; AttributeError: module cv2 has no attribute bgsegm原因 报错原因&#xff1a;使用的python环境中没有安装扩展包contrib 解决方法 可以通过pip或者conda安装 …

QT中文乱码解决方案与乱码的原因

相信大家应该都遇到过中文乱码的问题&#xff0c;有时候改一改中文就不乱码了&#xff0c;但是有时候用同样的方式还是乱码&#xff0c;那么这个乱码到底是什么原因&#xff0c;又该如何彻底解决呢&#xff1f; 总结 先总结一下&#xff1a; Qt5中&#xff0c;将QString()的构…

Java实现Csv文件导入导出

Java实现Csv文件导入导出 什么是.csv文件&#xff1f; CSV&#xff08;Comma-Separated Values&#xff0c;逗号分隔的值&#xff09;是一种简单、实用的文件格式&#xff0c;用于存储和表示包括文本、数值等各种类型的数据。CSV 文件通常以 .csv 作为文件扩展名。这种文件格…

基于蜣螂优化算法DBO优化的VMD-KELM光伏发电短期功率预测MATLAB代码

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; VMD适用于处理非线性和非平稳信号&#xff0c;例如振动信号、生物信号、地震信号、图像信号等。它在信号处理、振动分析、图像处理等领域有广泛的应用&#xff0c;特别是在提取信号中的隐含信息和去除噪声方面…

字符串中的strcpy和strncpy区别

strcpy:函数原型是char *strcpy(char* dest, const char *src)&#xff0c;含义是将src中的字符串复制到dest中。 strncpy:函数原型是char *strncpy(char *dest const char *src,int n&#xff09;&#xff0c;表示把src所指向的字符串中以src地址开始的前n个字节复制到dest所…

香港施政报告人才引进政策2023全面解读,对优才计划申请是否有影响?

香港施政报告人才引进政策2023全面解读&#xff0c;对优才计划申请是否有影响&#xff1f; 香港第二份施政报告10月25日出来了&#xff01;这次真的是“走进民生”啊&#xff0c;什么路都帮你想好了&#xff01; 总结就是&#xff1a;继续抢人才、留人才&#xff01;在昨天的《…

103.linux5.15.198 编译 firefly-rk3399(2)

1. 平台&#xff1a; rk3399 firefly 2g16g 2. 内核&#xff1a;linux5.15.136 &#xff08;从内核镜像网站下载&#xff09; 3. 交叉编译工具 gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 4. 宿主机&#xff1a;ubuntu18.04 5. 需要的素材和资料&#xff…

MySQL 单表查询 多表设计

目录 数据库操作-DQL(单表查询)语法基本查询&#xff08;不带任何条件&#xff09;条件查询&#xff08;where&#xff09;聚合函数分组查询&#xff08;group by [having]&#xff09;&#xff08;重点&#xff09;排序查询&#xff08;order by&#xff09;&#xff08;重点&…

MySQL数据库基本操作2

文章目录 主要内容一.DQL1.语法格式代码如下&#xff08;示例&#xff09;: 2.数据准备代码如下&#xff08;示例&#xff09;: 3.简单查询代码如下&#xff08;示例&#xff09;: 4.运算符5.运算符操作-算术运算符代码如下&#xff08;示例&#xff09;: 6.运算符操作-条件查询…

Spring Cloud Sentinel整合Nacos实现配置持久化

sentinel配置相关配置后无法持久化&#xff0c;服务重启之后就没了&#xff0c;所以整合nacos&#xff0c;在nacos服务持久化&#xff0c;sentinel实时与nacos通信获取相关配置。 使用上一章节Feign消费者服务实现整合。 版本信息&#xff1a; nacos:1.4.1 Sentinel 控制台 …

【DRAM存储器十七】DDR2介绍-DDR2的新增技术-Post CAS、ODT、RDQS、OCD

&#x1f449;个人主页&#xff1a;highman110 &#x1f449;作者简介&#xff1a;一名硬件工程师&#xff0c;持续学习&#xff0c;不断记录&#xff0c;保持思考&#xff0c;输出干货内容 参考资料&#xff1a;《镁光DDR数据手册》 目录 Post CAS ODT RDQS OCD Post CA…