前言:
現(xiàn)在正在從事Android開發(fā),一直以來對(duì)網(wǎng)絡(luò)模塊的認(rèn)識(shí)都非常的模糊蹋艺。
對(duì)于HTTP這方便的知識(shí)一竅不懂剃袍,有時(shí)候看別人整理的資料太多理論知識(shí)根本看不懂,于是整理了這篇文章方便自己回顧捎谨,也希望能幫助像我一樣不太懂后臺(tái)的人民效。
URI和URL
URI (Uniform Resource Identifiers) 統(tǒng)一資源標(biāo)示符
URL(Uniform Resource Locator) 統(tǒng)一資源定位符,是一種特殊類型的URI涛救。
URI和URL一直都經(jīng)澄沸希混亂,不過細(xì)看了URL是怎么組成的检吆,就不怕混亂了舒萎。
URL一般由三部組成:
- 協(xié)議(或稱為服務(wù)方式)
- 存有該資源的主機(jī)IP地址(有時(shí)也包括端口號(hào))
- 主機(jī)資源的具體地址。如目錄和文件名等
于是我理解成是一個(gè)地址
Request和Response
Request請(qǐng)求:
由請(qǐng)求行蹭沛、請(qǐng)求頭部臂寝、空行、請(qǐng)求數(shù)據(jù)四個(gè)部分組成
請(qǐng)求行:
GET /[要訪問的資源] HTTP/1.1
POST / HTTP/1.1
Response響應(yīng):
由狀態(tài)行摊灭、消息報(bào)頭咆贬、空行、響應(yīng)正文四個(gè)部分組成
狀態(tài)行:
HTTP/1.1 200 OK
HTTP狀態(tài)碼:
狀態(tài)碼由三位數(shù)字組成斟或,第一個(gè)數(shù)字定義了響應(yīng)的類型素征,共分為五類:
1xx:指示信息--表示請(qǐng)求已接收,繼續(xù)處理
2xx:成功--表示請(qǐng)求已被成功接收、理解御毅、接受
3xx:重定向--要完成請(qǐng)求必須進(jìn)行更進(jìn)一步的操作
4xx:客戶端錯(cuò)誤--請(qǐng)求有語法錯(cuò)誤或請(qǐng)求無法實(shí)現(xiàn)
5xx:服務(wù)器端錯(cuò)誤--服務(wù)器未能實(shí)現(xiàn)合法的請(qǐng)求
常見狀態(tài)碼:
200 OK //客戶端請(qǐng)求成功
400 Bad Request //客戶端請(qǐng)求有語法錯(cuò)誤根欧,不能被服務(wù)器所理解
403 Forbidden //服務(wù)器收到請(qǐng)求,但是拒絕提供服務(wù)
404 Not Found //請(qǐng)求資源不存在端蛆,eg:輸入了錯(cuò)誤的URL
500 Internal Server Error //服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤
503 Server Unavailable //服務(wù)器當(dāng)前不能處理客戶端的請(qǐng)求凤粗,一段時(shí)間后可能恢復(fù)正常
GET提交:
GET提交的數(shù)據(jù)會(huì)放在URL之后,以?分割URL和傳輸數(shù)據(jù)今豆,參數(shù)之間以&相連嫌拣。
HTTP協(xié)議
原理:
HTTP 是基于TCP/IP協(xié)議的應(yīng)用層協(xié)議。
它不涉及數(shù)據(jù)包(packet)傳輸呆躲,主要規(guī)定了客戶端和服務(wù)器之間的通信格式异逐,默認(rèn)使用80端口。
Content-Type:
HTTP允許傳輸任意類型的數(shù)據(jù)對(duì)象插掂,傳輸?shù)念愋陀蒀ontent-Type標(biāo)記灰瞻。
瀏覽器是依靠Content-Type來判斷響應(yīng)的內(nèi)容是網(wǎng)頁還是圖片,是視頻還是音樂辅甥。
常用的Content-Type屬性:
屬性 | 內(nèi)容 |
---|---|
text/html | .html 網(wǎng)頁 |
image/jpeg | .jpeg和.jpg 圖片文件 |
image/png | .png 圖片文件 |
application/json | json語句(接口的時(shí)候經(jīng)常用) |
application/octet-stream | .* (二進(jìn)制流酝润,不知道文件類型) |
application/x-www-form-urlencoded | Form數(shù)據(jù)被編碼為名稱/值對(duì) |
multipart/form-data | Form數(shù)據(jù)被編碼為一條信息,頁面上的每個(gè)空間對(duì)應(yīng)消息中的一個(gè)部分璃弄。 |
application/x-www-form-urlencoded和multipart/form-data在Form中的用法:(大神總結(jié)的)
- form的enctype屬性為編碼方式要销,常用有兩種:application/x-www-form-urlencoded和multipart/form-data,默認(rèn)為application/x-www-form-urlencoded夏块。
- 當(dāng)action為get時(shí)候疏咐,瀏覽器用x-www-form-urlencoded的編碼方式把form數(shù)據(jù)轉(zhuǎn)換成一個(gè)字串(name1=value1&name2=value2...),然后把這個(gè)字串a(chǎn)ppend到url后面拨扶,用?分割凳鬓,加載這個(gè)新的url茁肠。
- 當(dāng)action為post時(shí)候患民,瀏覽器把form數(shù)據(jù)封裝到http body中,然后發(fā)送到server垦梆。
- 如果沒有type=file的控件匹颤,用默認(rèn)的application/x-www-form-urlencoded就可以了。 但是如果有type=file的話托猩,就要用到multipart/form-data了印蓖。
application/x-www-form-urlencoded的請(qǐng)求例子:
POST /app/user/login HTTP/1.1
Host: 10.240.131.7:8080
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
Postman-Token: 05234002-4223-66fb-34f8-9be70557a745
username=potato&password=112233
好好學(xué)習(xí),天天向上京腥。<( ̄oo, ̄)/