一舰罚、請求與響應
1、請求
//請求行
//method path HTTP version
GET /user?gender=male HTTP/1.1
Host:www.xxx.com//請求頭相關
2急鳄、響應
//狀態(tài)行
//HTTP version 狀態(tài)碼 狀態(tài)信息
HTTP/1.1 200 OK
content-type:application/json;charset=utf-8//響應頭相關
.......
//響應體 body
[{"name":"Bob","age":22}]
3谤民、請求方法分類
a.GET 獲取資源;沒有body
b.POST 增加或者修改資源疾宏;有body
c.PUT 修改資源张足;有body
d.DELETE 刪除資源;沒有body
e.HEAD 與GET類似 但是這個請求服務器不會返回body
4坎藐、狀態(tài)碼
- 1xx: 臨時性消息
- 2xx:成功
- 3xx:重定向
- 4xx:客戶端錯誤
- 5xx:服務端錯誤
5为牍、Header
作用:HTTP消息的元數(shù)據(jù)
- Host:服務器主機地址(但不是用來尋址的,尋址是DNS(domian name system)的事情)
- Content-Type:內容的類型
- text/html;charset=utf-8 文本岩馍,用于瀏覽器頁面響應
- application/x-www-form-urlencoded;charset=utf-8 普通表單碉咆, encoded URL格式
@FormUrlEncoded @POST("user/edit") Call<User> updateUser(@Field("first_name") String firstName,@Field("last_name") String lastName);
- multipart/form-data;boundary=----Webkit********** 多不分形式,一般用于傳輸包含二進制內容的多項目內容
@Multipart @PUT("user/photo") Call<User> updateUser(@Part("photo") RequestBody photo,@Part("description") RequestBody description);
- application/json;charset=utf-8 JSON格式
- image/jpeg jpeg圖片的形式
- Content-Length:body內容的長度(字節(jié))
- Tansfer-Encoding:chunked 表示Body長度無法確定蛀恩,Content-Length不能使用
- location:https://www.baidu.com 重定向地址是百度https://www.baidu.com
- User-Agent:用戶代理
- Range:bytes=<start>-<end> 請求報文中出現(xiàn)疫铜,表示要取哪段數(shù)據(jù)。
//圖片總長度5000byte 請求的時候加上Range:bytes=0-3000 則只獲取到圖片的一部分
- Accept-Range:bytes 響應報文中出現(xiàn)双谆,表示服務器支持按字節(jié)來取范圍數(shù)據(jù)壳咕。
- Content-Range:<start>-<end>/<total> 響應報文中出現(xiàn),表示要發(fā)送的是哪段數(shù)據(jù)顽馋。
Range谓厘、Accept-Range、Content-Range多用在斷點續(xù)傳寸谜、多線程下載竟稳。 - 緩存相關的header
- Cache-Control:no-cache(需要問一下服務端)、no-store(不需要緩存)熊痴、max-age(失效日期之前都可以使用緩存)
- Last-Modified:
- If-Modified-Since
- Etag:相當于一個hash 服務端用于表示內容的指紋他爸。如果Etag相同,這直接使用緩存果善,不相同則返回新的內容诊笤。
- Accept: 客戶端能接受的數(shù)據(jù)類型。如 text/html
- Accept-Charset: 客戶端接受的字符集岭埠。如 utf-8
- Accept-Encoding: 客戶端接受的壓縮編碼類型盏混。如 gzip
- Content-Encoding:壓縮類型蔚鸥。如 gzip
+Authorization:授權- Authorization:Basic xxxxxxxxx
- Authorization:Bearer <bearer token>
- OAuth2 第三方授權