




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、1 1第第8 8章章 HTTPHTTP應用編程應用編程網(wǎng)絡應用編程網(wǎng)絡應用編程2 2網(wǎng)絡應用編程網(wǎng)絡應用編程 回顧回顧思考:在日常生活中思考:在日常生活中哪些場景見到過哪些場景見到過HTTP?思考:思考:是不是HTTP僅僅能用于B/S模式?B/SWeb服務器.HTTPBBBB3 3第第8 8章章 HTTPHTTP應用編程應用編程 任務任務1 1:模擬提交:模擬提交webweb請求請求 演示程序演示程序4 4第第8 8章章 HTTPHTTP應用編程應用編程任務任務2 2-模擬自動登錄模擬自動登錄:自動化測試自動化測試惡意攻擊惡意攻擊5 5第第8 8章章 HTTPHTTP應用編程應用編程任務任務3
2、 3:HTTPHTTP多線程下載多線程下載6 6第第8 8章章 HTTPHTTP應用編程應用編程8.1 HTTP8.1 HTTP簡介簡介8.2 8.2 HTTPHTTP編程相關類編程相關類8.3 8.3 利用利用HTTPHTTP實現(xiàn)多線程文件下載實現(xiàn)多線程文件下載7 7圖圖1 HTTP 1 HTTP 請求過程請求過程 HTTP(HTTP(HyperText Transfer Protocol ) )超文本超文本傳輸協(xié)議傳輸協(xié)議 8 8 HTTP/1.1 200 OKDate: Sat, 31 Dec 2005 23:59:59 GMTContent-Type: text/html;charse
3、t=ISO-8859-1Content-Length: 122Wrox HomepageFirst HTML將實際響應內(nèi)容用將實際響應內(nèi)容用瀏覽器打開觀察效果?瀏覽器打開觀察效果?9 9HTTP(HTTP(HyperText Transfer Protocol ) )全稱:全稱:超文本超文本傳輸協(xié)議傳輸協(xié)議 定義定義WebWeb服務器和瀏覽器服務器和瀏覽器之間傳輸?shù)臏贤ǚ绞街g傳輸?shù)臏贤ǚ绞絥早期:早期:HTMLHTML文件文件n發(fā)展:音頻文件、視頻文件等發(fā)展:音頻文件、視頻文件等說明:說明:n目前常用的目前常用的HTTPHTTP協(xié)議的版本是協(xié)議的版本是Http1.1Http1.1nRFC 2
4、616RFC 2616描述了描述了HTTPHTTP協(xié)議的具體信息協(xié)議的具體信息8.1 HTTP8.1 HTTP簡介簡介10108.1.1 HTTP8.1.1 HTTP的特點的特點(1 1)HTTPHTTP是是無狀態(tài)無狀態(tài)的的(2 2)HTTPHTTP以以TCPTCP方式工作方式工作(3 3)HTTPHTTP使用使用元信息元信息作為標頭作為標頭11118.1.1 HTTP8.1.1 HTTP的特點的特點 HTTPHTTP是是無狀態(tài)無狀態(tài)的的“無狀態(tài)無狀態(tài)”:客戶端發(fā)送一次請求后,服務器并沒有:客戶端發(fā)送一次請求后,服務器并沒有存儲關于該客戶端的任何狀態(tài)信息。例如:存儲關于該客戶端的任何狀態(tài)信息。
5、例如: Public int LoginCount = 0;Public int LoginCount = 0; void Login() void Login() if(Success) if(Success) LoginCount += 1; LoginCount += 1; 解決方案解決方案: : 客戶端客戶端CookieCookie,服務器端,服務器端SessionSession登錄成功N次后loginCouent=N?12128.1.1 HTTP8.1.1 HTTP的特點的特點 HTTPHTTP以以TCPTCP方式工作方式工作, ,不丟失數(shù)據(jù)不丟失數(shù)據(jù), ,不亂序不亂序 非持久連接非
6、持久連接( (早期)早期) 持久連接(當前)持久連接(當前) 客戶端客戶端 服務器服務器 請求報文請求報文響應報文響應報文打開打開TCPTCP連接連接關閉關閉TCPTCP連接連接圖圖2 2 非持久連接非持久連接13138.1.1 HTTP8.1.1 HTTP的特點的特點HTTPHTTP使用元信息作為標頭使用元信息作為標頭HTTPHTTP通過添加標頭(通過添加標頭(HeaderHeader)的方式向服務器提)的方式向服務器提供本次供本次HTTPHTTP請求的相關信息,即在請求的相關信息,即在主要數(shù)據(jù)前添主要數(shù)據(jù)前添加一部分信息加一部分信息,稱為元信息(,稱為元信息(Metainformation
7、Metainformation)。例如,傳送的對象屬于哪種類型,采用的是哪種例如,傳送的對象屬于哪種類型,采用的是哪種編碼等編碼等 14148.1.2 8.1.2 HTTPHTTP的請求與響應的請求與響應本節(jié)主要內(nèi)容本節(jié)主要內(nèi)容請求報文格式請求報文格式響應報文格式響應報文格式請求類型請求類型演示利用演示利用HttpWatchHttpWatch軟件,實時進行軟件,實時進行HttpHttp協(xié)議分析協(xié)議分析。怎么看到HTTP的請求報文和響應報文?15158.1.2 HTTP8.1.2 HTTP的的請求請求與響應與響應 請求報文例子請求報文例子:空行空行 請求主題請求主題 請求行請求行 頭部頭部 16
8、168.1.2 HTTP8.1.2 HTTP的的請求請求與響應與響應1.HTTP1.HTTP請求:請求:客戶端將客戶端將HTTPHTTP請求發(fā)送到服務器時,格式如下:請求發(fā)送到服務器時,格式如下:request-linerequest-line :n請求行請求行 MethodMethod URL URL VersionVersionheadersheaders :n標頭部分,說明服務器要使用的附加信息,一般由標頭部分,說明服務器要使用的附加信息,一般由多行組成。多行組成。blank lineblank line : :n標頭之后是一個空行標頭之后是一個空行 request-bodyreques
9、t-body : :n空行之后是請求的主體,主題中可以包含任意數(shù)據(jù)空行之后是請求的主體,主題中可以包含任意數(shù)據(jù)17178.1.2 HTTP8.1.2 HTTP的的請求請求與響應與響應例子例子POSTPOST /TheStockExchange/Trading/GetStockPrice.asp /TheStockExchange/Trading/GetStockPrice.asp HTTP/1.1HTTP/1.1Host: localhostHost: localhostContent-Type: application/x-www-form-urlencodedContent-Type: a
10、pplication/x-www-form-urlencodedContent-Length: 11Content-Length: 11name=name=ProfessionalProfessional& &publisher=publisher=WileyWiley注意空行注意空行 MethodMethod URL URL VersionVersionHeadersHeadersrequest bodyrequest body注意空行注意空行 18188.1.2 HTTP8.1.2 HTTP的請求與的請求與響應響應2.HTTP2.HTTP響應響應一般格式為一般格式為: :s
11、tatus-linestatus-line: :Version Version StatusCode StatusCode DescriptionDescription headersheaders blank lineblank line response-bodyresponse-body status-linestatus-line 狀態(tài)行:狀態(tài)行:n所有所有HTTPHTTP響應的第一行響應的第一行n內(nèi)容依次是當前內(nèi)容依次是當前HTTPHTTP版本號版本號、3 3位數(shù)字組成的狀位數(shù)字組成的狀態(tài)碼態(tài)碼以及以及描述狀態(tài)的短語描述狀態(tài)的短語,空格空格分隔分隔19198.1.2 HTTP8.1.
12、2 HTTP的請求與的請求與響應響應 狀態(tài)碼的第一個數(shù)字代表當前響應的類型,規(guī)定如下。狀態(tài)碼的第一個數(shù)字代表當前響應的類型,規(guī)定如下。1xx 1xx 消息消息請求已被服務器接收,繼續(xù)處理。請求已被服務器接收,繼續(xù)處理。2xx 2xx 成功成功請求已成功被服務器接收、理解、并接受請求已成功被服務器接收、理解、并接受3xx 3xx 重定向重定向需要后續(xù)操作才能完成這一請求。需要后續(xù)操作才能完成這一請求。4xx 4xx 請求錯誤請求錯誤請求含有詞法錯誤或者無法被執(zhí)行。請求含有詞法錯誤或者無法被執(zhí)行。5xx 5xx 服務器錯誤服務器錯誤服務器處理某個正確請求時發(fā)生錯誤服務器處理某個正確請求時發(fā)生錯誤2
13、0208.1.2 HTTP8.1.2 HTTP的請求與的請求與響應響應2.HTTP2.HTTP響應響應HTTPHTTP常用狀態(tài)碼常用狀態(tài)碼21218.1.2 HTTP8.1.2 HTTP的請求與的請求與響應響應 HTTP/1.1 200 OKHTTP/1.1 200 OKDate: Date: Sat, 31 Dec 2005 23:59:59 GMTContent-Type: Content-Type: text/html;charset=ISO-8859-1Content-Length: Content-Length: 122Wrox Homepagetesttest例子例子注意空行注意空
14、行 22228.1.2 HTTP8.1.2 HTTP的請求與的請求與響應響應23238.1.2 HTTP8.1.2 HTTP的請求與響應的請求與響應3.Http3.Http請求方式請求方式(1 1)GetGet方式方式最常見的請求,表示客服端告訴服務器獲取哪些資源最常見的請求,表示客服端告訴服務器獲取哪些資源例如例如: :用戶在用戶在WebWeb瀏覽器上輸入瀏覽器上輸入,此時瀏覽器,此時瀏覽器向服務器發(fā)送的就是一個向服務器發(fā)送的就是一個GETGET請求,內(nèi)部發(fā)送的信息如下請求,內(nèi)部發(fā)送的信息如下 GET GET / / HTTP/1.1 HTTP/1.1 Host: www.Host: .cn
15、 User-Agent: User-Agent: (內(nèi)容太長,此處省略)(內(nèi)容太長,此處省略) Connection: Keep-Alive Connection: Keep-Alive (此處為一空行)(此處為一空行)24248.1.2 HTTP8.1.2 HTTP的請求與響應的請求與響應3.Http3.Http請求方式請求方式(1 1)GetGet方式方式提交的數(shù)據(jù)附在提交的數(shù)據(jù)附在URLURL之后(請求行)之后(請求行) 例如:例如:要要輸入查詢條件輸入查詢條件problemproblem后,點擊搜索后,點擊搜索那么內(nèi)部發(fā)送那么內(nèi)部發(fā)送的信息可能類似下面的內(nèi)容:的信息可能類似下面的內(nèi)容:
16、 GET /s?wd=problem&rsv_bp=0& HTTP/1.1 GET /s?wd=problem&rsv_bp=0& HTTP/1.1 Host: www. Host: .cn User-Agent: User-Agent: Connection: Keep-Alive Connection: Keep-Alive (此處為一空行)(此處為一空行) 注意注意: :只有第只有第1 1行的內(nèi)容發(fā)生了變化行的內(nèi)容發(fā)生了變化, ,觀察地址欄?觀察地址欄?25258.1.2 HTTP8.1.2 HTTP的請求與響應的請求與響應3.Http3.Http請求方式
17、請求方式(1 1)GetGet方式方式修改登錄頁面的表單提交方式為GET,觀察地址欄26268.1.2 HTTP8.1.2 HTTP的請求與響應的請求與響應參數(shù)在地址欄中顯示,參數(shù)在地址欄中顯示,headerheader中的請求行中傳送中的請求行中傳送格式:格式:以以?分割分割URL和傳輸數(shù)據(jù),和傳輸數(shù)據(jù),key=value參數(shù)對之參數(shù)對之間以間以&相連相連n如數(shù)據(jù)是英文字母如數(shù)據(jù)是英文字母/ /數(shù)字,原樣發(fā)送數(shù)字,原樣發(fā)送n如是空格,轉(zhuǎn)換為如是空格,轉(zhuǎn)換為+ +n如是中文如是中文/ /其他字符,直接把字符串用其他字符,直接把字符串用BASE64BASE64加加密,密,XXXX中的中的
18、XXXX為該符號以為該符號以1616進制表示的進制表示的ASCIIASCII例如nname=hyddd&password=idontknowname=hyddd&password=idontknow27278.1.2 HTTP8.1.2 HTTP的請求與響應的請求與響應(2 2)POSTPOST請求請求用途:用途:要求服務器接收大量的信息,一般用于提要求服務器接收大量的信息,一般用于提交交FormForm表單。表單。POST VS GETPOST VS GETnGET: GET: 在在URLURL后面后面附加信息附加信息nPOSTPOST: :在請求主體中為服務器提供附加信息在
19、請求主體中為服務器提供附加信息演示:演示:n提交提交FormForm表單時分別選擇表單時分別選擇GETGET和和POSTPOST觀察地址欄觀察地址欄的變化的變化. .28288.1.2 HTTP8.1.2 HTTP的請求與響應的請求與響應(2 2)POSTPOST請求請求參數(shù)鍵值對存放在請求主體中,而非在地址中。例如:參數(shù)鍵值對存放在請求主體中,而非在地址中。例如:POST /Login.aspx HTTP/1.1POST /Login.aspx HTTP/1.1User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; WindoUser-Agent: Mo
20、zilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)ws NT 6.1; WOW64; Trident/5.0)Content-Type: application/x-www-form-urlencodedContent-Type: application/x-www-form-urlencodedHost: localhost:2207Host: localhost:2207Content-Length: 49Content-Length: 49Connection: Keep-AliveConnection
21、: Keep-Alive(此處為一空行)(此處為一空行)name=a&passwd=b&mysubmitButton=%E7%99%BB%E5%BD%95name=a&passwd=b&mysubmitButton=%E7%99%BB%E5%BD%9529298.1.2 HTTP8.1.2 HTTP的請求與響應的請求與響應HEADHEAD請求請求HEADHEAD請求獲得請求獲得headerheader部分。部分。因此因此HEADHEAD方法通常方法通常不單獨使用不單獨使用,而是和其他的請,而是和其他的請求方法一起起到求方法一起起到輔助作用輔助作用。例如:例如:一
22、些搜尋引擎使用的自動搜索機器人采用這個方法一些搜尋引擎使用的自動搜索機器人采用這個方法來獲得網(wǎng)頁的標志信息來獲得網(wǎng)頁的標志信息檢查遠程文件下載鏈接是否可用檢查遠程文件下載鏈接是否可用3030第第8 8章章 HTTPHTTP應用編程應用編程8.1 HTTP8.1 HTTP簡介簡介8.2 HTTP8.2 HTTP編程相關類編程相關類8.3 8.3 利用利用HTTPHTTP實現(xiàn)多線程文件下載實現(xiàn)多線程文件下載31318.2 HTTP8.2 HTTP編程相關類編程相關類 應用分析應用分析簡化版的瀏覽器簡化版的瀏覽器抓取頁面源碼抓取頁面源碼表單自動填入表單自動填入n模擬自動登錄模擬自動登錄文件上傳文件上
23、傳文件下載文件下載32328. 2. 4 利用利用GETGET方法提交請求的數(shù)據(jù)方法提交請求的數(shù)據(jù)例例1 1:編寫程序,制作簡化版本的瀏覽器:編寫程序,制作簡化版本的瀏覽器訪問,抓取頁面內(nèi)容33338.2.1 WebRequest8.2.1 WebRequest類和類和HttpWebRequestHttpWebRequest類類 GET / HTTP/1.1 GET / HTTP/1.1 Host: www.Host: .cn User-Agent: User-Agent: (內(nèi)容太長,此處省略)(內(nèi)容太長,此處省略) Connection: Keep-AliveConnection: Kee
24、p-Alive (此處為一空行)(此處為一空行)34348.2.1 WebRequest8.2.1 WebRequest類和類和HttpWebRequestHttpWebRequest類類 WebRequest:請求請求/響應模型的抽象(響應模型的抽象(abstract)基類。)基類。用于訪問用于訪問Internet數(shù)據(jù)。數(shù)據(jù)。用協(xié)議不可知的方式從用協(xié)議不可知的方式從Internet請求數(shù)據(jù)。請求數(shù)據(jù)。 HttpWebRequest:是針對于是針對于HTTP的特定實現(xiàn)。的特定實現(xiàn)。該類通過該類通過HTTP和服務器交互和服務器交互HttpWebRequest WebRequest 35358.2
25、.3 Uri8.2.3 Uri類類 為了使為了使URIURI具有規(guī)范化格式,具有規(guī)范化格式,UriUri構造函數(shù)執(zhí)行以下步驟。構造函數(shù)執(zhí)行以下步驟。(1 1)將)將URIURI方案轉(zhuǎn)換為小寫。方案轉(zhuǎn)換為小寫。(2 2)將主機名轉(zhuǎn)換為小寫。)將主機名轉(zhuǎn)換為小寫。(3 3)移除默認端口號和空端口號。)移除默認端口號和空端口號。(4 4)移除多余的段(如)移除多余的段(如“/”/”和和“/test”/test”段)以簡化段)以簡化URIURI 下面的代碼創(chuàng)建下面的代碼創(chuàng)建UriUri類的實例,并用它來創(chuàng)建類的實例,并用它來創(chuàng)建 WebRequestWebRequestUri siteUri = Ur
26、i siteUri = new Uri(http:/ new Uri(http:/ request = WebRequest.Create(siteUri);WebRequest request = WebRequest.Create(siteUri);。36368.2.1 WebRequest8.2.1 WebRequest類和類和HttpWebRequestHttpWebRequest類類模擬模擬HTTPHTTP請求請求創(chuàng)建創(chuàng)建HttpWebRequestHttpWebRequest對象,例如對象,例如HttpWebRequest request =HttpWebRequest reque
27、st =設置相關屬性,模擬設置相關屬性,模擬POSTPOST或者或者GETGET方式獲取數(shù)據(jù)方式獲取數(shù)據(jù)request.Methed = GET;request.Methed = GET;request.UserAgent = request.UserAgent = Mozilla/5.0 (compatible; Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)“MSIE 9.0; Windows NT 6.1; Trident/5.0)“ WebRquest.Create(WebRquest.Create(“ht
28、tp:/http:/)(HttpWebRequest)(HttpWebRequest)37378.2.1 WebRequest8.2.1 WebRequest類和類和HttpWebRequestHttpWebRequest類類38388.2.2 WebResponse8.2.2 WebResponse類和類和HttpWebResponseHttpWebResponse類類模擬模擬HTTPHTTP請求請求提交請求提交請求HttpWebResponse response = HttpWebResponse response = (HttpWebResponse)request.GetRespons
29、e();(HttpWebResponse)request.GetResponse();訪問響應信息訪問響應信息nresponse.StatusCoderesponse.StatusCodenresponse.response.GetResponseStream();GetResponseStream();釋放資源釋放資源39398.2.2 WebResponse8.2.2 WebResponse類和類和HttpWebResponseHttpWebResponse類類40408.2.4 利用利用GETGET方法提交請求的數(shù)據(jù)方法提交請求的數(shù)據(jù) 例例1 1:簡化版瀏覽器:簡化版瀏覽器41418.2
30、.4 8.2.4 利用利用GETGET方法提交請求的數(shù)據(jù)方法提交請求的數(shù)據(jù)例例2 2:修改程序,以:修改程序,以GETGET方式提交搜索條件?方式提交搜索條件??grade=1&school=?grade=1&school=henu訪問,抓取頁面內(nèi)容42428.2.4 利用利用GETGET方法提交請求的數(shù)據(jù)方法提交請求的數(shù)據(jù)小結小結構造構造HttpWebRequestHttpWebRequest對象對象, ,注意參數(shù)以鍵值對注意參數(shù)以鍵值對的形式,追加在的形式,追加在URLURL地址后地址后request.Methed=GETrequest.Methed=GETGetRespo
31、nseGetResponse對象,提交請求對象,提交請求獲取響應流,抓取頁面內(nèi)容獲取響應流,抓取頁面內(nèi)容43438.2.5 利用利用POSTPOST方法提交請求的數(shù)據(jù)方法提交請求的數(shù)據(jù)模擬登錄模擬登錄考慮和考慮和GET方式的不同?方式的不同?44448.2.5 利用利用POSTPOST方法提交請求的數(shù)據(jù)方法提交請求的數(shù)據(jù) 原理:原理:POSTPOST請求時,參數(shù)鍵值對存放在請求主體中,而非請求時,參數(shù)鍵值對存放在請求主體中,而非在地址中。例如:在地址中。例如:POST /Login.aspx HTTP/1.1POST /Login.aspx HTTP/1.1User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; WinUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Tride
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 法律實務合同審查技能知識要點梳理
- 《小學體育田徑運動基本技能訓練教案》
- 安全管理文檔之班組長安全培訓實施方案
- 2025年國網(wǎng)山東省電力公司招聘高校畢業(yè)生1300人(第一批)筆試參考題庫附帶答案詳解
- 2025年國家電網(wǎng)有限公司客戶服務中心招聘15人(第一批)筆試參考題庫附帶答案詳解
- 2025年上半年宜春市公安局交通警察支隊招考臨聘人員易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年宜昌市興山縣事業(yè)單位招考考試(66人)易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年定西市通渭縣事業(yè)單位及招考易考易錯模擬試題(共500題)試卷后附參考答案
- 2024福建泉州晉江市市政工程建設有限公司權屬公司招聘4人筆試參考題庫附帶答案詳解
- 2025年上半年安陽市湯陰縣事業(yè)單位招考易考易錯模擬試題(共500題)試卷后附參考答案
- 《珍愛生命拒絕毒品》主題班會課件
- GB/T 32399-2024信息技術云計算參考架構
- 蘇教版二年級數(shù)學下冊單元測試題及答案全套1
- 河北張家口中國化工集團盛華化工公司“11.28”重大爆燃事故調(diào)查報告
- 《知識產(chǎn)權法教程(第八版) 》 課件 王遷 第1-9章 總論、著作權法律制度概述-專利法律制度概述
- 07SG111-1 建筑結構加固施工圖設計表示方法
- 屋頂分布式光伏發(fā)電EPC項目 投標方案(技術方案)
- 網(wǎng)約車停運損失費起訴狀模板
- 中國急性缺血性卒中診治指南(2023)解讀
- A型肉毒素治療知情同意書 注射知情同意書
- 血液透析導管溶栓及護理
評論
0/150
提交評論