超文本傳輸協議
超文本/html
工作方式
get / url 請求獲取相應報文
http://xxxxxxxxxxxx.com/user?xxx = xxx
協議類型 - 服務器地址 -路徑 path
請求格式:
head / body
path路徑進行處理資源
等同于報文請求:
GET: /users HTTP/1.1
Host:api.github.com
響應報文
請求方式:
GET (獲取,一般沒有body)?冪等
body體 GET,Retrofit則會報錯
POST(增加/修改/刪除數據)
有body體? ??冪等
name =xxx& xxx= xxx
DELETE(刪除數據)??冪等
沒有body
PUT(修改數據)
有body體 同POST? 都是冪等
HEAD(獲取信息):
沒有Body
狀態碼:
1xx : 100 臨時消息 ,101協議可切換 ,102 通過Upgrade : h2c 判斷返回碼?
2XX: 200請求成功 status = 200 OK,? ?201創建成功
3XX: 301 重定向 資源遷移 會跳轉到headrs的 Location的地址,
4XX: 服務端錯誤,404資源未找到, 401未授權
5XX: 500 服務器錯誤
Http狀態碼 | Http Status Code | Http狀態碼含義中文說明 |
---|---|---|
100 | 100 Continue100 | 請繼續請求 |
101 | 101 Switching Protocols101 | 請切換協議 |
102 | 102 Processing102 | 將繼續執行請求 |
200 | 200 OK200 | 請求成功 |
201 | 201 Created201 | 請求已被接受,等待資源響應 |
202 | 202 Accepted202 | 請求已被接受,但尚未處理 |
203 | 203 Non-Authoritative Information203 | 請求已成功處理,結果來自第三方拷貝 |
204 | 204 No Content204 | 請求已成功處理,但無返回內容 |
205 | 205 Reset Content205 | 請求已成功處理,但需重置內容 |
206 | 206 Partial Content206 | 請求已成功處理,但僅返回了部分內容 |
207 | 207 Multi-Status207 | 請求已成功處理,返回了多個狀態的XML消息 |
208 | 208 Already Reported208 | 響應已發送 |
226 | 226 IM Used226 | 已完成響應 |
300 | 300 Multiple Choices300 | 返回多條重定向供選擇 |
301 | 301 Moved Permanently301 | 永久重定向 |
302 | 302 Found302 | 臨時重定向 |
303 | 303 See Other303 | 當前請求的資源在其它地址 |
304 | 304 Not Modified304 | 請求資源與本地緩存相同,未修改 |
305 | 305 Use Proxy305 | 必須通過代理訪問 |
306 | 306 (已廢棄Switch Proxy306 | (已廢棄請切換代理) |
307 | 307 Temporary Redirect307 | 臨時重定向,同302 |
308 | 308 Permanent Redirect308 | 永久重定向,且禁止改變http方法 |
400 | 400 Bad Request400 | 請求錯誤,通常是訪問的域名未綁定引起 |
401 | 401 Unauthorized401 | 需要身份認證驗證 |
402 | 402 Payment Required | - |
403 | 403 Forbidden403 | 禁止訪問 |
404 | 404 Not Found404 | 請求的內容未找到或已刪除 |
405 | 405 Method Not Allowed405 | 不允許的請求方法 |
406 | 406 Not Acceptable406 | 無法響應,因資源無法滿足客戶端條件 |
407 | 407 Proxy Authentication Required407 | 要求通過代理的身份認證 |
408 | 408 Request Timeout408 | 請求超時 |
409 | 409 Conflict409 | 存在沖突 |
410 | 410 Gone410 | 資源已經不存在(過去存在) |
411 | 411 Length Required411 | 無法處理該請求 |
412 | 412 Precondition Failed412 | 請求條件錯誤 |
413 | 413 Payload Too Large413 | 請求的實體過大 |
414 | 414 Request-URI Too Long414 | 請求的URI過長 |
415 | 415 Unsupported Media Type415 | 無法處理的媒體格式 |
416 | 416 Range Not Satisfiable416 | 請求的范圍無效 |
417 | 417 Expectation Failed417 | 無法滿足的Expect |
418 | 418 I’m a teapot418 | 愚人節笑話 |
421 | 421 There are too many connections from your internet address421 | 連接數超限 |
422 | 422 Unprocessable Entity422 | 請求的語義錯誤 |
423 | 423 Locked423 | 當前資源被鎖定 |
424 | 424 Failed Dependency424 | 當前請求失敗 |
425 | 425 Unordered Collection425 | 未知 |
426 | 426 Upgrade Required426 | 請切換到TLS/1.0 |
428 | 428 Precondition Required428 | 請求未帶條件 |
429 | 429 Too Many Requests429 | 并發請求過多 |
431 | 431 Request Header Fields Too Large431 | 請求頭過大 |
449 | 449 Retry With449 | 請重試 |
451 | 451 Unavailable For Legal Reasons451 | 訪問被拒絕(法律的要求) |
499 | 499 Client Closed Request499 | 客戶端主動關閉了連接 |
500 | 500 Internal Server Error500 | 服務器端程序錯誤 |
501 | 501 Not Implemented501 | 服務器不支持的請求方法 |
502 | 502 Bad Gateway502 | 網關無響應 |
503 | 503 Service Unavailable503 | 服務器端臨時錯誤 |
504 | 504 Gateway Timeout504 | 網關超時 |
505 | 505 HTTP Version Not Supported505 | 服務器不支持的HTTP版本 |
506 | 506 Variant Also Negotiates506 | 服務器內部配置錯誤 |
507 | 507 Insufficient Storage507 | 服務器無法存儲請求 |
508 | 508 Loop Detected508 | 服務器因死循環而終止操作 |
509 | 509 Bandwidth Limit Exceeded509 | 服務器帶寬限制 |
510 | 510 Not Extended510 | 獲取資源策略未被滿足 |
511 | 511 Network Authentication Required511 | 需驗證以許可連接 |
599 | 599 Network Connect Timeout Error599 | 網絡連接超時 |
Header:
元數據
通過請求的url 解析dns地址
Host:給主機判斷,請求哪個子服務器等
域名可以通過DNS解析,然后放到Host請求
Content-Length = number??數據長度,如果是二進制則不會準確,\n則會切斷后面的數據,需要指定content-Length
Content-Type / text/html
ContentType-JSON ..
請求和相應JSON報文:
Retrofit:
FormBody? 表單,對應Retrofit?FormUrlEncoded,通過Field
類似于url拼接格式
FormBoundary?分割線,將多個數據進行切分,上傳文件,或者二進制文件,可以通過這種方式
Retrofit 實例
不可以同FormEncoded同時使用,都是Form表單提交
image-jpeg
上傳,下載文件, 上傳/?相應報文:
Chunked Transfer Encoding分快傳輸編碼:
Location:
OkHttp自動進行重定向到返回的location的重定向
User-Agent 用戶代理
Range / Accept-Range分段加載,通過Content-Length判斷總大小,Content_Range bytes xx-xx /xx加載的當前進度 / 總進度
可以進行斷點續傳,多線程加載
其他HEADED? 值
Cache 緩存:
?緩存和緩沖
no-cache 不緩存
no-store
max-age
Last-Modufied? 最后請求的一次標簽,用于判斷鑒定是否最新數據
Etag 指紋
REST:
架構風格
server 服務器架構 cs / bs
statelessness 無狀態
cachebulity:可緩存
Layered :可選項
Code On:
Uninform interface:統一接口:
描述資源
資源修改
自描述信息 Content-Type
超媒體 以連接方法查看資源