1、HTTP協(xié)議

(原話)談談對HTTP協(xié)議的理解:
超文本傳輸協(xié)議,應用于OSI網絡模型中的應用層,是用于服務器傳輸超文本到本地瀏覽器的傳送協(xié)議。它有兩個比較需要注意的特點就是:無連接,當服務器處理完客戶的請求,并受到客戶的應答后,就斷開連接;還有就是無狀態(tài),是指協(xié)議對事物處理沒有記憶能力,如果后續(xù)處理需要前面的信息,那么就需要重傳。
請求消息:request,由請求行,請求頭部,空行,請求數據組成。其中請求頭部包含說明服務器使用的附加信息,比如HOST(請求服務器的域名和端口號),還有客戶端能接受的內容類型,語言,內容壓縮編碼類型,字符集編碼等。
響應消息:response,由狀態(tài)嗎,消息報頭,空行,響應正文,消息報頭則和請求消息中的請求頭部相對應。

get和post的區(qū)別:get刷新和回退是無害的,Post數據會被重新提交,因為get能夠被緩存,而Post是不能被緩存的,然后get可以被存為書簽,請求參數會顯示在URL中,并且會保留在瀏覽器歷史中,get對數據長度是有限制的,Post是無限制的;最后get對數據類型的限制,只允許ASC||字符,Post還可以使用二進制。

以下部分為轉載內容:

一、HTTP簡介

·●http協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫,是用于從萬維網(world wide web)服務器傳輸超文本到本地瀏覽器的傳送協(xié)議。
·●http是基于TCP/IP通信協(xié)議來傳送數據(HTML文件、圖片文件、查詢結果等)
·●http是一個屬于應用層的面向對象的協(xié)議,由于其簡捷、快速的方式,適用于分布式超媒體信息系統(tǒng)。
·●HTTP協(xié)議工作于客戶端-服務端架構為上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB服務器發(fā)送所有請求。Web服務器根據接收到的請求后,向客戶端發(fā)送響應信息。

image.png

主要特點
1、簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有get、head、post.每種方法規(guī)定了客戶與服務器聯(lián)系的類型不同。由于http協(xié)議簡單,使得http服務器的程序規(guī)模小,因而通信速度很快。
2、靈活:http允許傳輸任意類型的數據對象。正在傳輸的類型由content-type加以標記。
3、無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,并受到客戶的應答后,即斷開連接。采用這種方式可以節(jié)省傳輸時間。
4、無狀態(tài):http協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的額信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。
5、支持B/S及C/S模式

二、HTTP之URL:

http使用統(tǒng)一資源標識符(Uniform resource Identitifers,URL)來傳輸數據和建立連接。Url是一種特殊類型的URI,包含了用于查找某個資源的足夠信息。

URL,全稱是UniformResourceLocator, 中文叫統(tǒng)一資源定位符,是互聯(lián)網上用來標識某一處資源的地址。以下面這個URL為例,介紹下普通URL的各部分組成:

http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

從上面的
URL可以看出,一個完整的URL包括以下幾部分:

1.協(xié)議部分:該URL的協(xié)議部分為“http:”,這代表網頁使用的是http協(xié)議。在Internet中可以使用多種協(xié)議,如http,F(xiàn)TP等等。在“http:”后面跟著的是分隔符“//”

2.域名部分:該URL的域名部分為www.aspxfans.com,一個URL中,也可以使用IP地址作為域名使用。

3.端口部分:根在域名后面的是端口,域名和端口之間使用“:”作為分隔符。端口不是一個URL必須的部分,如果省略端口部分,將采用默認端口。

4.虛擬目錄部分:從域名后的第一個“/”開始到最后一個“/”為止,是虛擬目錄部分。虛擬目錄也不是一個URL必須的部分。本例中的虛擬目錄是“/news/”

5.文件名部分:從域名后的最后一個“/”開始到“?”為止,是文件名部分,如果沒有“?”則是從域名的最后一個“/”開始到“#”為止,是文件部分,如果沒有“?”和“#”,那么從域名后的最后一個“/”開始到結束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一個URL必須的部分,如果省略該部分,則使用默認的文件名

6.錨部分:從“#”開始到最后,都是錨部分。本例中的錨部分是“name”。錨部分也不是一個URL必須的部分

7.參數部分:從“?”開始到“#”為止之間的部分為參數部分,又稱搜索部分、查詢部分。本例中的參數部分為“boardID=5&ID=24618&page=1”。參數可以允許有多個參數,參數與參數之間用“&”作為分隔符。

三、URI和URL的區(qū)別:

URI,是Uniform resource identifier,統(tǒng)一資源標識符,用來唯一地標志一個資源。
Web上可用的每種資源如HTML文檔,圖像、視頻片段、程序等都是用一個URI來定位的
URI一般由但部分組成:
A.訪問資源的命名機制
B.存放資源的主機名
C.資源自身的名稱,由路徑表示,著重強調于資源。

URL是uniform resource locator ,統(tǒng)一資源定位器,它是一種具體的URI,即URL可以用來標志一個資源,而且還指明了如何locate定位這個資源
URL是Internet上用來描述信息資源的字符串,主要用在各種WWW客戶程序和服務器程序上,特別是著名的MOSAIC
采用URL可以用一種統(tǒng)一的格式來描述各種信息資源,包括文件、服務器的地址和目錄等。URL一般由三部分組成:
A.協(xié)議(或者稱為服務方式)
B.存有該資源的主機IP地址(有時也包括端口)
C.主機資源的具體地址。如目錄和文件名等。

URN,uniform resource name,統(tǒng)一資源命名,是通過名字來標識資源,比如mailto:java-net@java.sun.com
URI是以一種抽象的,高層次概念定義統(tǒng)一資源標識,而URL和URN則是具體的資源標識的方式。URL和URN都是一種URI。籠統(tǒng)地說,每個 URL 都是 URI,但不一定每個 URI 都是 URL。這是因為 URI 還包括一個子類,即統(tǒng)一資源名稱 (URN),它命名資源但不指定如何定位資源。上面的 mailto、news 和 isbn URI 都是 URN 的示例。
在Java的URI中,一個URI實例可以代表絕對的,也可以是相對的,只要它符合URI的語法規(guī)則。而URL類則不僅符合語義,還包含了定位該資源的信息,因此它不能是相對的。
在Java類庫中,URI類不包含任何訪問資源的方法,它唯一的作用就是解析。
相反的是,URL類可以打開一個到達資源的流

四、HTTP之請求消息request

客戶端發(fā)送一個http請求到服務器的請求消息包括以下格式:
請求行(request line)、請求頭部(header)、空行和請求數據四個部分組成


·請求行以一個方法符號開頭,以空格分開,后面跟著請求的URI和協(xié)議的版本。
Get請求例子,使用charles 抓取的request:

GET /562f25980001b1b106000338.jpg HTTP/1.1 
Host img.mukewang.com 
User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 
Accept image/webp,image/*,*/*;q=0.8 
Referer http://www.imooc.com/ 
Accept-Encoding gzip, deflate, sdch 
Accept-Language zh-CN,zh;q=0.

第一部分:請求行,用來說明請求類型,要訪問的資源以及所使用的http版本。
get說明請求類型為GET,[/562f25980001b1b106000338.jpg]為要訪問的資源,該行的 最后一部分說明使用的是HTTP1.1版本。
第二部分:請求頭部,緊接著請求行之后的部分,用來說明服務器要使用的附加信息
從第二行起為請求頭部,HOST將指出請求的目的地,User-Agent服務器端和客戶端腳 本都能訪問它,它是瀏覽器類型檢測邏輯的重要基礎,該信息由你的瀏覽器來定義,并 且在每個請求中自動發(fā)送等等
第三部分:空行,請求頭部后面空行是必須的
即使第四部分的請求數據為空,也必須有空行。
第四部分:請求數據也叫主體,可以添加任意的其他數據。
這個例子的請求數據為空。

Post請求例子,request:

POST / HTTP1.1 Host:www.wrox.com 
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
 Content-Type:application/x-www-form-urlencoded 
Content-Length:40 
Connection: Keep-Alive 
name=Professional%20Ajax&publisher=Wiley

五、HTTP之響應信息reponse

一般情況下,服務器接收并處理客戶端發(fā)過來的請求后會返回一個HTTP的響應信息。
HTTP響應也由四個部分組成,分別為:狀態(tài)行、消息報頭、空行、響應正文
(原話)談談對HTTP協(xié)議的理解:
超文本傳輸協(xié)議,應用于OSI網絡模型中的應用層,是用于服務器傳輸超文本到本地瀏覽器的傳送協(xié)議。它有兩個比較需要注意的特點就是:無連接,當服務器處理完客戶的請求,并受到客戶的應答后,就斷開連接;還有就是無狀態(tài),是指協(xié)議對事物處理沒有記憶能力,如果后續(xù)處理需要前面的信息,那么就需要重傳。
請求消息:request,由請求行,請求頭部,空行,請求數據組成。其中請求頭部包含說明服務器使用的附加信息,比如HOST(請求服務器的域名和端口號),還有客戶端能接受的內容類型,語言,內容壓縮編碼類型,字符集編碼等。
響應消息:response,由狀態(tài)嗎,消息報頭,空行,響應正文,消息報頭則和請求消息中的請求頭部相對應。

get和post的區(qū)別:get刷新和回退是無害的,Post數據會被重新提交,因為get能夠被緩存,而Post是不能被緩存的,然后get可以被存為書簽,請求參數會顯示在URL中,并且會保留在瀏覽器歷史中,get對數據長度是有限制的,Post是無限制的;最后get對數據類型的限制,只允許ASC||字符,Post還可以使用二進制。

以下部分為轉載內容:

一、HTTP簡介

·●http協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫,是用于從萬維網(world wide web)服務器傳輸超文本到本地瀏覽器的傳送協(xié)議。
·●http是基于TCP/IP通信協(xié)議來傳送數據(HTML文件、圖片文件、查詢結果等)
·●http是一個屬于應用層的面向對象的協(xié)議,由于其簡捷、快速的方式,適用于分布式超媒體信息系統(tǒng)。
·●HTTP協(xié)議工作于客戶端-服務端架構為上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB服務器發(fā)送所有請求。Web服務器根據接收到的請求后,向客戶端發(fā)送響應信息。

image.png

主要特點
1、簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有get、head、post.每種方法規(guī)定了客戶與服務器聯(lián)系的類型不同。由于http協(xié)議簡單,使得http服務器的程序規(guī)模小,因而通信速度很快。
2、靈活:http允許傳輸任意類型的數據對象。正在傳輸的類型由content-type加以標記。
3、無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,并受到客戶的應答后,即斷開連接。采用這種方式可以節(jié)省傳輸時間。
4、無狀態(tài):http協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的額信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。
5、支持B/S及C/S模式

二、HTTP之URL:

http使用統(tǒng)一資源標識符(Uniform resource Identitifers,URL)來傳輸數據和建立連接。Url是一種特殊類型的URI,包含了用于查找某個資源的足夠信息。

URL,全稱是UniformResourceLocator, 中文叫統(tǒng)一資源定位符,是互聯(lián)網上用來標識某一處資源的地址。以下面這個URL為例,介紹下普通URL的各部分組成:

http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

從上面的
URL可以看出,一個完整的URL包括以下幾部分:

1.協(xié)議部分:該URL的協(xié)議部分為“http:”,這代表網頁使用的是http協(xié)議。在Internet中可以使用多種協(xié)議,如http,F(xiàn)TP等等。在“http:”后面跟著的是分隔符“//”

2.域名部分:該URL的域名部分為www.aspxfans.com,一個URL中,也可以使用IP地址作為域名使用。

3.端口部分:根在域名后面的是端口,域名和端口之間使用“:”作為分隔符。端口不是一個URL必須的部分,如果省略端口部分,將采用默認端口。

4.虛擬目錄部分:從域名后的第一個“/”開始到最后一個“/”為止,是虛擬目錄部分。虛擬目錄也不是一個URL必須的部分。本例中的虛擬目錄是“/news/”

5.文件名部分:從域名后的最后一個“/”開始到“?”為止,是文件名部分,如果沒有“?”則是從域名的最后一個“/”開始到“#”為止,是文件部分,如果沒有“?”和“#”,那么從域名后的最后一個“/”開始到結束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一個URL必須的部分,如果省略該部分,則使用默認的文件名

6.錨部分:從“#”開始到最后,都是錨部分。本例中的錨部分是“name”。錨部分也不是一個URL必須的部分

7.參數部分:從“?”開始到“#”為止之間的部分為參數部分,又稱搜索部分、查詢部分。本例中的參數部分為“boardID=5&ID=24618&page=1”。參數可以允許有多個參數,參數與參數之間用“&”作為分隔符。

三、URI和URL的區(qū)別:

URI,是Uniform resource identifier,統(tǒng)一資源標識符,用來唯一地標志一個資源。
Web上可用的每種資源如HTML文檔,圖像、視頻片段、程序等都是用一個URI來定位的
URI一般由但部分組成:
A.訪問資源的命名機制
B.存放資源的主機名
C.資源自身的名稱,由路徑表示,著重強調于資源。

URL是uniform resource locator ,統(tǒng)一資源定位器,它是一種具體的URI,即URL可以用來標志一個資源,而且還指明了如何locate定位這個資源
URL是Internet上用來描述信息資源的字符串,主要用在各種WWW客戶程序和服務器程序上,特別是著名的MOSAIC
采用URL可以用一種統(tǒng)一的格式來描述各種信息資源,包括文件、服務器的地址和目錄等。URL一般由三部分組成:
A.協(xié)議(或者稱為服務方式)
B.存有該資源的主機IP地址(有時也包括端口)
C.主機資源的具體地址。如目錄和文件名等。

URN,uniform resource name,統(tǒng)一資源命名,是通過名字來標識資源,比如mailto:java-net@java.sun.com
URI是以一種抽象的,高層次概念定義統(tǒng)一資源標識,而URL和URN則是具體的資源標識的方式。URL和URN都是一種URI。籠統(tǒng)地說,每個 URL 都是 URI,但不一定每個 URI 都是 URL。這是因為 URI 還包括一個子類,即統(tǒng)一資源名稱 (URN),它命名資源但不指定如何定位資源。上面的 mailto、news 和 isbn URI 都是 URN 的示例。
在Java的URI中,一個URI實例可以代表絕對的,也可以是相對的,只要它符合URI的語法規(guī)則。而URL類則不僅符合語義,還包含了定位該資源的信息,因此它不能是相對的。
在Java類庫中,URI類不包含任何訪問資源的方法,它唯一的作用就是解析。
相反的是,URL類可以打開一個到達資源的流

四、HTTP之請求消息request

客戶端發(fā)送一個http請求到服務器的請求消息包括以下格式:
請求行(request line)、請求頭部(header)、空行和請求數據四個部分組成


·請求行以一個方法符號開頭,以空格分開,后面跟著請求的URI和協(xié)議的版本。
Get請求例子,使用charles 抓取的request:

GET /562f25980001b1b106000338.jpg HTTP/1.1 
Host img.mukewang.com 
User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 
Accept image/webp,image/*,*/*;q=0.8 
Referer http://www.imooc.com/ 
Accept-Encoding gzip, deflate, sdch 
Accept-Language zh-CN,zh;q=0.

第一部分:請求行,用來說明請求類型,要訪問的資源以及所使用的http版本。
get說明請求類型為GET,[/562f25980001b1b106000338.jpg]為要訪問的資源,該行的 最后一部分說明使用的是HTTP1.1版本。
第二部分:請求頭部,緊接著請求行之后的部分,用來說明服務器要使用的附加信息
從第二行起為請求頭部,HOST將指出請求的目的地,User-Agent服務器端和客戶端腳 本都能訪問它,它是瀏覽器類型檢測邏輯的重要基礎,該信息由你的瀏覽器來定義,并 且在每個請求中自動發(fā)送等等
第三部分:空行,請求頭部后面空行是必須的
即使第四部分的請求數據為空,也必須有空行。
第四部分:請求數據也叫主體,可以添加任意的其他數據。
這個例子的請求數據為空。

Post請求例子,request:

POST / HTTP1.1 Host:www.wrox.com 
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
 Content-Type:application/x-www-form-urlencoded 
Content-Length:40 
Connection: Keep-Alive 
name=Professional%20Ajax&publisher=Wiley

五、HTTP之響應信息reponse

一般情況下,服務器接收并處理客戶端發(fā)過來的請求后會返回一個HTTP的響應信息。
HTTP響應也由四個部分組成,分別為:狀態(tài)行、消息報頭、空行、響應正文

image.png

![(原話)談談對HTTP協(xié)議的理解:
超文本傳輸協(xié)議,應用于OSI網絡模型中的應用層,是用于服務器傳輸超文本到本地瀏覽器的傳送協(xié)議。它有兩個比較需要注意的特點就是:無連接,當服務器處理完客戶的請求,并受到客戶的應答后,就斷開連接;還有就是無狀態(tài),是指協(xié)議對事物處理沒有記憶能力,如果后續(xù)處理需要前面的信息,那么就需要重傳。
請求消息:request,由請求行,請求頭部,空行,請求數據組成。其中請求頭部包含說明服務器使用的附加信息,比如HOST(請求服務器的域名和端口號),還有客戶端能接受的內容類型,語言,內容壓縮編碼類型,字符集編碼等。
響應消息:response,由狀態(tài)嗎,消息報頭,空行,響應正文,消息報頭則和請求消息中的請求頭部相對應。

get和post的區(qū)別:get刷新和回退是無害的,Post數據會被重新提交,因為get能夠被緩存,而Post是不能被緩存的,然后get可以被存為書簽,請求參數會顯示在URL中,并且會保留在瀏覽器歷史中,get對數據長度是有限制的,Post是無限制的;最后get對數據類型的限制,只允許ASC||字符,Post還可以使用二進制。

以下部分為轉載內容:

一、HTTP簡介

·●http協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫,是用于從萬維網(world wide web)服務器傳輸超文本到本地瀏覽器的傳送協(xié)議。
·●http是基于TCP/IP通信協(xié)議來傳送數據(HTML文件、圖片文件、查詢結果等)
·●http是一個屬于應用層的面向對象的協(xié)議,由于其簡捷、快速的方式,適用于分布式超媒體信息系統(tǒng)。
·●HTTP協(xié)議工作于客戶端-服務端架構為上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB服務器發(fā)送所有請求。Web服務器根據接收到的請求后,向客戶端發(fā)送響應信息。

image.png

主要特點
1、簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有get、head、post.每種方法規(guī)定了客戶與服務器聯(lián)系的類型不同。由于http協(xié)議簡單,使得http服務器的程序規(guī)模小,因而通信速度很快。
2、靈活:http允許傳輸任意類型的數據對象。正在傳輸的類型由content-type加以標記。
3、無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,并受到客戶的應答后,即斷開連接。采用這種方式可以節(jié)省傳輸時間。
4、無狀態(tài):http協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的額信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。
5、支持B/S及C/S模式

二、HTTP之URL:

http使用統(tǒng)一資源標識符(Uniform resource Identitifers,URL)來傳輸數據和建立連接。Url是一種特殊類型的URI,包含了用于查找某個資源的足夠信息。

URL,全稱是UniformResourceLocator, 中文叫統(tǒng)一資源定位符,是互聯(lián)網上用來標識某一處資源的地址。以下面這個URL為例,介紹下普通URL的各部分組成:

http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

從上面的
URL可以看出,一個完整的URL包括以下幾部分:

1.協(xié)議部分:該URL的協(xié)議部分為“http:”,這代表網頁使用的是http協(xié)議。在Internet中可以使用多種協(xié)議,如http,F(xiàn)TP等等。在“http:”后面跟著的是分隔符“//”

2.域名部分:該URL的域名部分為www.aspxfans.com,一個URL中,也可以使用IP地址作為域名使用。

3.端口部分:根在域名后面的是端口,域名和端口之間使用“:”作為分隔符。端口不是一個URL必須的部分,如果省略端口部分,將采用默認端口。

4.虛擬目錄部分:從域名后的第一個“/”開始到最后一個“/”為止,是虛擬目錄部分。虛擬目錄也不是一個URL必須的部分。本例中的虛擬目錄是“/news/”

5.文件名部分:從域名后的最后一個“/”開始到“?”為止,是文件名部分,如果沒有“?”則是從域名的最后一個“/”開始到“#”為止,是文件部分,如果沒有“?”和“#”,那么從域名后的最后一個“/”開始到結束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一個URL必須的部分,如果省略該部分,則使用默認的文件名

6.錨部分:從“#”開始到最后,都是錨部分。本例中的錨部分是“name”。錨部分也不是一個URL必須的部分

7.參數部分:從“?”開始到“#”為止之間的部分為參數部分,又稱搜索部分、查詢部分。本例中的參數部分為“boardID=5&ID=24618&page=1”。參數可以允許有多個參數,參數與參數之間用“&”作為分隔符。

三、URI和URL的區(qū)別:

URI,是Uniform resource identifier,統(tǒng)一資源標識符,用來唯一地標志一個資源。
Web上可用的每種資源如HTML文檔,圖像、視頻片段、程序等都是用一個URI來定位的
URI一般由但部分組成:
A.訪問資源的命名機制
B.存放資源的主機名
C.資源自身的名稱,由路徑表示,著重強調于資源。

URL是uniform resource locator ,統(tǒng)一資源定位器,它是一種具體的URI,即URL可以用來標志一個資源,而且還指明了如何locate定位這個資源
URL是Internet上用來描述信息資源的字符串,主要用在各種WWW客戶程序和服務器程序上,特別是著名的MOSAIC
采用URL可以用一種統(tǒng)一的格式來描述各種信息資源,包括文件、服務器的地址和目錄等。URL一般由三部分組成:
A.協(xié)議(或者稱為服務方式)
B.存有該資源的主機IP地址(有時也包括端口)
C.主機資源的具體地址。如目錄和文件名等。

URN,uniform resource name,統(tǒng)一資源命名,是通過名字來標識資源,比如mailto:java-net@java.sun.com
URI是以一種抽象的,高層次概念定義統(tǒng)一資源標識,而URL和URN則是具體的資源標識的方式。URL和URN都是一種URI。籠統(tǒng)地說,每個 URL 都是 URI,但不一定每個 URI 都是 URL。這是因為 URI 還包括一個子類,即統(tǒng)一資源名稱 (URN),它命名資源但不指定如何定位資源。上面的 mailto、news 和 isbn URI 都是 URN 的示例。
在Java的URI中,一個URI實例可以代表絕對的,也可以是相對的,只要它符合URI的語法規(guī)則。而URL類則不僅符合語義,還包含了定位該資源的信息,因此它不能是相對的。
在Java類庫中,URI類不包含任何訪問資源的方法,它唯一的作用就是解析。
相反的是,URL類可以打開一個到達資源的流

四、HTTP之請求消息request

客戶端發(fā)送一個http請求到服務器的請求消息包括以下格式:
請求行(request line)、請求頭部(header)、空行和請求數據四個部分組成


·請求行以一個方法符號開頭,以空格分開,后面跟著請求的URI和協(xié)議的版本。
Get請求例子,使用charles 抓取的request:

GET /562f25980001b1b106000338.jpg HTTP/1.1 
Host img.mukewang.com 
User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 
Accept image/webp,image/*,*/*;q=0.8 
Referer http://www.imooc.com/ 
Accept-Encoding gzip, deflate, sdch 
Accept-Language zh-CN,zh;q=0.

第一部分:請求行,用來說明請求類型,要訪問的資源以及所使用的http版本。
get說明請求類型為GET,[/562f25980001b1b106000338.jpg]為要訪問的資源,該行的 最后一部分說明使用的是HTTP1.1版本。
第二部分:請求頭部,緊接著請求行之后的部分,用來說明服務器要使用的附加信息
從第二行起為請求頭部,HOST將指出請求的目的地,User-Agent服務器端和客戶端腳 本都能訪問它,它是瀏覽器類型檢測邏輯的重要基礎,該信息由你的瀏覽器來定義,并 且在每個請求中自動發(fā)送等等
第三部分:空行,請求頭部后面空行是必須的
即使第四部分的請求數據為空,也必須有空行。
第四部分:請求數據也叫主體,可以添加任意的其他數據。
這個例子的請求數據為空。

Post請求例子,request:

POST / HTTP1.1 Host:www.wrox.com 
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
 Content-Type:application/x-www-form-urlencoded 
Content-Length:40 
Connection: Keep-Alive 
name=Professional%20Ajax&publisher=Wiley

五、HTTP之響應信息reponse

一般情況下,服務器接收并處理客戶端發(fā)過來的請求后會返回一個HTTP的響應信息。
HTTP響應也由四個部分組成,分別為:狀態(tài)行、消息報頭、空行、響應正文

![Uploading image_687775.png . . .]
](http://upload-images.jianshu.io/upload_images/8816796-a913046d377b7ae1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

HTTP/1.1 200 OK 
Date: Fri, 22 May 2009 06:07:21 GMT 
Content-Type: text/html; charset=UTF-8 
<html> 
    <head></head> 
    <body> 
          <!--body goes here--> 
    </body> 
</html>

第一部分:狀態(tài)行,由http協(xié)議版本號,狀態(tài)號,狀態(tài)消息三部分組成。
第一行為狀態(tài)行,(http/1.1)表名http版本,狀態(tài)碼為200,狀態(tài)消息為(OK)
第二部分:消息報頭,用來說明客戶端要使用的一些附加信息
二三行為消息報頭,
Date:生成響應的日期和時間;content-type:指定了MIME類型的HTML(text/html), 編碼類型為UTF-8
第三部分:空行,消息報頭后面的空行必須要有。
第四部分:響應正文,服務器返回給客戶端的文本信息。
空行后面的html部分為響應正文。

六、HTTP之狀態(tài)碼

狀態(tài)碼由三個數字組成,第一個數字定義了響應的類別,共分五種類別:
1xx:指示信息--表示請求已接受,繼續(xù)處理
2xx:成功--表示請求已被成功接收、理解、接受
3xx:重定向--要完成請求必須進行更進一步的操作
4xx:客戶端錯誤--請求有語法錯誤或請求無法實現(xiàn)
5xx:服務器端錯誤--服務器未能實現(xiàn)合法的請求
一些常見的狀態(tài)碼:
···
200 OK //客戶端請求成功
400 bad request //客戶端請求有語法錯誤,不能被服務器所理解
401 unauthorized //請求要求用戶的省份認證
403 forbidden //服務器理解請求客戶端的請求,但是拒絕執(zhí)行此請求
404 not found //請求資源不存在
500 internal server error//服務器發(fā)生不可預期的錯誤
503 server unavailable //服務器當前不能處理客戶端的請求,一段時間后可能恢復正常
···

七、HTTP請求方法

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容