為什麼要先學fiddler?
學習介面測試必學http協議,如果直接先講協議,我估計小夥伴們更懵,為了更好的理解協議,先從抓包開始。結合抓包工具講http協議更容易學一些。
抓firefox上https請求fiddler是一個很好的抓包工具,預設是抓http請求的,對於pc上的https請求,會提示網頁不安全,這時候需要在瀏覽器上安裝證書。
一、網頁不安全1.用fiddler抓包時候,開啟百度網頁:https://www.baidu.com
2.提示:網頁不安全
二、fiddler設定1.開啟選單欄:Tools>Fiddler Options>HTTPS2.勾選Decrypt HTTPS traffic,裡面的兩個子選單也一起勾選了
三、匯出證書1.點右上角Actions按鈕2.選第二個選項,匯出到桌面,此時桌面上會多一個檔案:FiddlerRoot.cer,如圖。
四、匯入到firefox瀏覽器1.開啟右上角瀏覽器設定》選項》高階》證書》檢視證書》證書機構》匯入2.勾選檔案匯入如果還不能成功,那就重啟瀏覽器,重啟電腦了。
證書匯出失敗問題前言在點Actions時候出現Export Failed:The root certificate could not be located.最近有很多小夥伴在fiddler匯出證書的時候,遇到無法匯出的問題,收集了幾種解決辦法,供參考。
二、無法匯出問題解決方案1.首先確保安裝的 Fiddler 是較新的版本,先關閉fiddler2.下載並安裝Fiddler證書生成器下載地址:http://www.telerik.com/docs/default-source/fiddler/addons/fiddlercertmaker.exe?sfvrsn=23.點Tools>Fiddler Options4.勾選Capture HTTPS traffic5.點Actions按鈕,Export Root Certificate Desktop按鈕匯出到桌面
三、刪除證書1.有些小夥伴可能之前裝過一些fiddler證書,安裝的姿勢不對,導致新的證書不起作用,這時候需要先刪掉之前的證書了方法一:從fiddler裡開啟證書管理介面方法二、從檔案管理器輸入:certmgr.msc並回車2.搜尋之前安裝的fiddler證書,找到之後全部刪除3.重新下載證書生成器:http://www.telerik.com/docs/default-source/fiddler/addons/fiddlercertmaker.exe?sfvrsn=2一路傻瓜式安裝,遇到警告什麼的直接忽略就行。4.安裝好證書後,按照1.1章節Fiddler抓包1-抓firefox上https請求的瀏覽器匯入證書就行了(弄好之後,重啟電腦就OK了)
只抓APP的請求前言fiddler在抓手機app的請求時候,通常也會抓到來自PC的請求,導致會話訊息太多,那麼如何把來自pc的請求過濾掉,只抓來自APP的請求呢?必備環境:1.電腦上已裝fiddler2.手機和電腦在同一區域網
設定1.fiddler>Tools>Fiddler Options>Connections 勾選Allow remote computers to connect。2.記住這裡的埠號:8888,後面會用到。
檢視電腦IP1.開啟cmd,輸入:ipconfig,記住這個IPv4地址。
ipconfig
設定代理1.手機設定->WLAN設定->選擇該wifi,點右邊的箭頭(有的手機是長按彈出選項框)。
2.選擇修改網路配置:配置主機名:與主機電腦IP地址保持一致埠號:88883.儲存後就可以抓到來自手機的請求了。
抓APP上的HTTPS請求1.如果app都是http請求,是不需要安裝證書,能直接抓到的,如果是https請求,這時候手機就需要下載證書了。2.開啟手機瀏覽器輸入:http://10.224.xx.xx:8888 ,這個中間的host地址就是前面查到的本機地址。3.出現如下畫面,點箭頭所指的位置,點選安裝就可以了。
設定過濾1.手機上設定代理後,這時候fiddler上抓到的是pc和app所有的請求,如果pc上開啟網址,會很多,這時候就需要開啟過濾功能了。2.開啟fiddler>Tools>Fiddler Options>HTTPS>…from remote clients only,勾選這個選項就可以了
from all processes :抓所有的請求from browsers only :只抓瀏覽器的請求from non-browsers only :只抓非瀏覽器的請求from remote clients only:只抓遠端客戶端請求(注意:如果手機設定代理後,測完之後記得恢復原樣,要不然手機無法正常上網。)檢視get與post請求前言前面兩篇關於Fiddler抓包的一些基本配置,配置完之後就可以抓到我們想要的資料了,接下來就是如何去分析這些資料。本篇以部落格園的請求為例,簡單分析get與post資料有何不一樣,以後也能分辨出哪些是get,哪些是post了。
get請求1.開啟fiddler工具,然後瀏覽器輸入部落格首頁地址:http://www.cnblogs.com/yoyoketang/2.點開右側Inspectors下的Headers區域,檢視Request Headers3.Request Headers區域裡面的就是請求頭資訊,可以看到開啟部落格園首頁的是get請求
post請求1.開啟登入首頁:https://test.cn/user/signin2.輸入賬號和密碼登入成功後,檢視fiddler抓包的請求頭資訊,可以看出是post請求
如何找出需要的請求1.開啟fiddler後,左邊會話框區域刷刷刷的很多請求,那麼如何有效的找出自己需要的請求呢?2.首先第一步:清屏(cls),在左下角命令列輸入cls,清空螢幕(清屏也可以使用快捷鍵Ctrl+X)
3.第二步在瀏覽器輸入url地址的時候,記住這個地址,如開啟部落格首頁:http://www.cnblogs.com/yoyoketang/在點選登入按鈕的時候,不要做多餘的操作了,然後檢視fiddler會話框,這時候有好幾個請求。4.如上圖,紅色框框這個地方就是host地址,紅色圈圈地方就是url的路徑(yoyoketang),也就是部落格首頁的地址了,那這個請求就是部落格首頁的請求了。
get和post請求引數區別1.關於get和post的功能上區別就不說了,大家自己查資料,這裡主要從fiddler抓包的層面檢視請求引數上的區別2.get請求的Raw引數檢視,主要分三部分:
第1部分是請求url地址第2部分是host地址第3部分是請求頭部資訊header3.再檢視部落格登入請求的Raw資訊,post的資訊分四部分。–前面3塊內容都一樣,第3部分和第4部分中間會空一行–第4部分內容就是post請求的請求body(get請求是沒body的)工具介紹(request和response)前言本篇簡單的介紹下fiddler介面的幾塊區域,以及各自區域到底是幹什麼用的,以便於更好的掌握這個工具
工具簡介第一塊區域是設定選單,這個前面3篇都有介紹第二塊區域是一些快捷選單,可以點下快捷功能鍵第三塊左邊是抓捕的請求會話列表,每一個請求就是一個會話第四塊右邊上方區域是request請求的詳細資訊,可以檢視Headers、Cookies、Raw、JSON等第五塊右邊下方區域就是response資訊,可以檢視服務端返回的json資料或其它資訊第六塊區域左下角黑色的那塊小地方,雖然很不起眼,容易被忽略掉,這地方是命令列模式,可以輸入簡單的指令如:cls,執行清屏的作用等會話框1.會話框主要檢視請求的一些請求的一些基本資訊,如# 、result、protocol、host、url、body、 caching、content-type、process
2、會話框列表最左側,#號這一欄是代表這個請求大概是什麼內容,<>這個符號就是我們一般要測試的請求與響應的型別。3.result:這裡是伺服器返回的程式碼,如
200,請求ok;2xx一般是伺服器接受成功了並處理3xx,重定向相關4xx,404最常見的的就是找不到伺服器,一般是請求地址有問題5xx,這個一般是伺服器本身的錯誤4.protocol:這個是協議型別,如http、https5.host:主機地址或域名6.url:請求的路徑7.body:該條請求產生的資料大小8.caching:快取相關9.content-type:連線型別10.process:客戶端型別
Request 和Response1.Request是客戶端發出去的資料,Response是服務端返回過來的資料,這兩塊區域功能差不多
2.headers:請求頭,這裡包含client、cookies、transport等3.webfroms:請求引數資訊表格展示,更直觀。可以直接該區域的引數4.Auth:授權相關,如果顯示如下兩行,說明不需要授權,可以不用關注(這個目前很少見了)
No Proxy-Authorization Header is present.No Authorization Headeris present.5.cookies:檢視cookie詳情6.raw:檢視一個完整請求的內容,可以直接複製7.json:檢視json資料8.xml:檢視xml檔案的資訊
decode解碼1.如果response的TextView區域出現亂碼情況,可以直接點下方黃色區域解碼
2.也可以選中上方快捷選單decode,這樣後面的請求都會自動解碼了
介面測試(Composer)前言Fiddler最大的優勢在於抓包,我們大部分使用的功能也在抓包的功能上,fiddler做介面測試也是非常方便的。對應沒有介面測試文件的時候,可以直接抓完包後,copy請求引數,修改下就可以了。
Composer簡介點開右側Composer區域,可以看到如下介面,就是測試介面的介面了
1.請求方式:點開可以勾選請求協議是get、post等2.url位址列:輸入請求的url地址3.請求頭:第三塊區域可以輸入請求頭資訊4.請求body:post請求在此區域輸入body資訊5.執行:Execute按鈕點選後就可以執行請求了6.http版本:可以勾選http版本7.請求歷史:執行完成後會在右側History區域生成歷史記錄
模擬get請求1.在Composer區域位址列輸入部落格首頁:http://www.cnblogs.com/yoyoketang/2.選擇get請求,點Execute執行,請求就可以傳送成功啦3.請求傳送成功後,左邊會話框會生成一個會話記錄,可以檢視抓包詳情4.右側history區域會多一個歷史請求記錄5.會話框選中該記錄,檢視測試結果:
選中該會話,點開Inspectorsresponse區域點開Raw區域Raw檢視的是HTML原始碼的資料也可以點WebView,檢視返回的web頁面資料Json資料1.有些post的請求引數和返回引數是Json格式的,如部落格園的登入請求:https://passport.cnblogs.com/user/signin
2.在登入頁面手動輸入賬號和密碼,登入成功。
3.找到這個登入成功的會話,檢視json資料如下圖:
模擬post請求1.請求型別勾選post
2.url位址列輸入對應的請求地址
3.body區域寫登入的json引數,json引數直接copy上一步抓包的資料,如下圖紅色區域
4.header請求頭區域,可以把前面登入成功後的頭部抓包的資料copy過來(注意,有些請求如果請求頭為空的話,會請求失敗的)
5.執行成功後檢視測試結果:–執行成功如第三所示的圖,顯示success=True–執行失敗如下圖所示,顯示message=Invalid length for a Base-64 char array or string.success=False
get請求(url詳解)前言上一篇介紹了Composer的功能,可以模擬get和post請求,get請求有些是不帶引數的,這種比較容易,直接放到url位址列就行。有些get請求會帶有引數,本篇詳細介紹url地址格式。
url詳解1.url就是我們平常開啟百度在位址列輸入的:https://www.baidu.com,如下圖,這個是最簡單的url地址,開啟的是百度的主頁
2.再看一個稍微複雜一點的url,在百度輸入框輸入:上海悠悠部落格園
3.檢視url位址列,對比之前的百度首頁url地址,後面多了很多引數。當然最主要的引數是:wd=上海悠悠部落格園(後面的一大串可以暫時忽略)。4.那麼問題來了,這些引數有什麼作用呢?可以做個簡單的對比,在位址列分別輸入:https://www.baidu.comhttps://www.baidu.com/s?wd=上海悠悠部落格園對比開啟的頁面有什麼不一樣,現在知道作用了吧,也就是說這個多的”/s?wd=上海悠悠部落格園”就是搜尋的結果頁面
url解析1.以”https://www.baidu.com/s?wd=上海悠悠部落格園”這個url請求的抓包為例
2.那麼一個完整的url地址,基本格式如下:https://host:port/path?xxx=aaa&ooo=bbb
http/https:這個是協議型別,如圖中所示host:伺服器的IP地址或者域名,如圖中2所示port:HTTP伺服器的預設埠是80,這種情況下埠號可以省略。如果使用了別的埠,必須指明,例如:192.168.3.111:8080,這裡的8080就是埠path:訪問資源的路徑,如圖中3所示/s (圖中3是把path和請求引數放一起了)?:url裡面的?這個符號是個分割線,用來區分問號前面的是path,問號後面的是引數url-params:問號後面的是請求引數,格式:xxx=aaa,如圖4區域就是請求引數&:多個引數用&符號連線請求引數(params)1.在url裡面請求引數一般叫params,但是我們在fiddler抓包工具看到的引數是:QueryString2.QueryString是像服務端提交的引數,其實跟params是一個意思,每個引數對應的都有name和value值3.多個引數情況如下:
UrlEncode編碼1.如果url地址的引數帶有中文的,一般在url裡面會是這樣的,如第二點裡的wd=%E4%B8%8A%E6%B5%B7%E6%…像看到%E4這種編碼的就是經過url編碼過的,需要解碼就能看到是什麼中文了2.用urlencode線上編碼/解碼工具,地址:http://tool.chinaz.com/tools/urlencode.aspx
post請求(body)前言上一篇講過get請求的引數都在url裡,post的請求相對於get請求多了個body部分,本篇就詳細講解下body部分引數的幾種形式。注意:post請求的引數可以放在url,也可以放在body,也可以同時放在url和body,當然post請求也可以不帶引數。只是一般來說,post請求的引數習慣放到body部分
body資料型別常見的post提交資料型別有四種:1.第一種:application/json:這是最常見的json格式,也是非常友好的深受小夥伴喜歡的一種,如下
{“input1”:”xxx”,”input2”:”ooo”,”remember”:false}12.第二種:application/x-www-form-urlencoded:瀏覽器的原生 form 表單,如果不設定 enctype 屬性,那麼最終就會以 application/x-www-form-urlencoded 方式提交數
input1=xxx&input2=ooo&remember=false13.第三種:multipart/form-data:這一種是表單格式的,資料型別如下:
WebKitFormBoundaryrGKCBY7qhFd3TrwA Content-Disposition: form-data; name=”file”; filename=”chrome.png” Content-Type: image/png PNGcontent of chrome.png WebKitFormBoundaryrGKCBY7qhFd3TrwA12345674.第四種:text/xml:這種直接傳的xml格式
2.前面講過post的請求多一個body部分,上圖紅色區域就是部落格園登入介面的body部分,很明顯這種格式是前面講到的第一種json格式3.檢視json格式的樹狀結構,更友好,可以點開JSON選單項
4.檢視這裡的json資料,很明顯傳了三個引數:
input1:這個是登入的賬號引數(加密過)input2:這個是登入的密碼引數(加密過)remember:這個是登入頁面的勾選是否記住密碼的選項,False是不記住,True是記住x-www-form-urlencoded1.登入部落格園後,開啟新隨筆,隨便寫一個標題和一個正文後儲存,抓包資料如下
2.如上圖的這種格式,很明顯就屬於第二種了,這種型別的資料檢視,在WebFrom裡面查看了
3.上面紅色框框的Query String是url裡面的引數,下面紅色框框的body部分就是這次post提交的body引數部分了。
WebFrom1.為什麼登入請求的WebFrom的body部分為空呢?
2.看上圖紅色框框的顯示:這裡只支援application/x-www-form-urlencoded這種格式的body引數,也就是說json格式的,需要在JOSN這一欄查看了。
打斷點(bpu)前言先給大家講一則小故事,在我們很小的時候是沒有手機的,那時候跟女神聊天都靠小紙條。某屌絲A男對隔壁小王的隔壁女神C傾慕已久,於是天天小紙條騷擾,無奈中間隔著一個小王,這樣小王就負責傳小紙條了。有一天小王忍不住偷偷開啟A男表白的紙條,把裡面內容改了下,改成了:我的同桌小王喜歡你。最後女神C和小王走在了一起。。。這是一個悲傷的故事!
斷點1.為什麼要打斷點呢?比如一個購買的金額輸入框,輸入框前端做了限制100-1000,那麼我們測試的時候,需要測試小於100的情況下。很顯然前端只能輸入大於100的。這是我們可以先抓到介面,修改請求引數,繞過前端,傳一個小於100的數,檢查服務端的功能是否OK。也就是說介面測試其實是不需要管前端的,主要測後端的功能。Fiddler作為代理伺服器的作用其實就相當於上面故事裡面的小王,傳紙條的作用,Fiddler(小王)修改了請求引數(小紙條),是為了驗證服務端功能(女神C)。2.Fiddler可以修改以下請求
Fiddler設定斷點,可以修改HTTP請求頭資訊,如修改Cookie,User-Agent等可以修改請求資料,突破錶單限制,提交任意數字,如充值最大100,可以修改成10000攔截響應資料,修改響應體,如修改服務端返回的頁面資料斷點的兩種方式1.before response:這個是打在request請求的時候,未到達伺服器之前–屌絲A傳給小王的時候,小王在這個時候攔截了小紙條,未傳給女神C
2.after response:也就是伺服器響應之後,在Fiddler將響應傳回給客戶端之前。–女神C回了小紙條,小王拿到後攔截了,未傳給屌絲A
全域性斷點1.全域性斷點就是中斷fiddler捕獲的所有請求,先設定下,點選rules-> automatic breakpoint ->before requests
2.選中before requests選項後,開啟部落格園首頁:http://www.cnblogs.com/yoyoketang/,看到如下T的標識,說明斷點成功
4.找到需要修改的請求後,選中該條會話,右側開啟WebFroms,這時候裡面的引數都是可以修改的了
5.修改之後點Run to Completion就能提交了,於是就成功修改了請求引數了6.打全域性斷點的話,是無法正常上網的,需要清除斷點:rules-> automatic breakpoint ->disabled
單個斷點已經知道了某個介面的請求地址,這時候只需要針對這一條請求打斷點除錯,在命令列中輸入指令就可以了
請求前斷點(before response): bpu
論壇登入介面:http://127.0.0.1/vhost/conf/img_echo.php?w=640&h=332&src=https://passport.cnblogs.com/user/signin命令列輸入:bpu http://127.0.0.1/vhost/conf/img_echo.php?w=640&h=332&src=https://passport.cnblogs.com/user/signin 回車請求登入介面的時候,就會只攔截登入這個介面了,此時可以修改任意請求引數取消斷點,在命令列輸入: bpu 回車就可以了響應後斷點(after requests): bpafter
論壇登入介面:https://passport.cnblogs.com/user/signin在命令列輸入:bpafter https://passport.cnblogs.com/user/signin 回車登入部落格園,會發現已經攔截到登入後伺服器返回的資料了,此時可以修改任意返回資料取消斷點,在命令列輸入: bpafter 回車就可以了攔截來自某個網站所有請求1.在命令列輸入:bpu www.cnblogs.com2.開啟部落格園任意網頁,發現都被攔截到了3.開啟部落格園其他網站,其它網站可以正常請求4.說明只攔截了來自部落論壇(www.cnblogs.com)的請求5.清除輸入bpu回車即可
命令列其它相關指令Bpafter, Bps, bpv, bpm, bpu這幾個命令主要用於批量設定斷點Bpafter xxx: 中斷 URL 包含指定字元的全部 session 響應Bps xxx: 中斷 HTTP 響應狀態為指定字元的全部 session 響應Bpv xxx: 中斷指定請求方式的全部 session 響應Bpm xxx: 中斷指定請求方式的全部 session 響應 、、同於 bpv xxxBpu xxx:與bpafter類似當這些命令沒有加引數時,會清空所有設定了斷點的HTTP請求。更多的其他命令可以參考Fiddler官網手冊(贈言:打斷點僅供測試需要,勿走歪門邪道!!!)
會話儲存前言為什麼要儲存會話呢?舉個很簡單的場景,你在上海測試某個功能介面的時候,發現了一個BUG,而開發這個介面的開發人員是北京的一家合作公司。你這時候給對方開發提bug,如何顯得專業一點,能讓對方心服口服的接受這個BUG呢?如果只是截圖的話,不是很方便,因為要截好幾個地方還描述不清楚,不如簡單粗暴一點把整個會話儲存起來,發給對方。
一、儲存為文字
以部落格園登入為例,抓到登入的請求會話點左上角File>Save>Selected Sessions>as Text,儲存到電腦上就是文字格式的文字格式的可以直接開啟,結果如下圖幾種儲存方式save-All Sessions :儲存所有的會話,saz檔案save-Selected Session:儲存選中的會話in ArchiveZIP :儲存為saz檔案as Text :以txt檔案形式儲存整個會話包括Request和Responseas Text (Headers only) :僅儲存頭部Request:儲存請求Entir Request:儲存整個請求資訊(headers和body)Request Body:只儲存請求body部分Response:儲存返回Entir Response:儲存整個返回資訊(headers和body)Response Body:只儲存返回body部分and Open as Local File:儲存Response資訊,並開啟檔案亂碼問題(decode)開啟部落格園首頁:http://127.0.0.1/vhost/conf/img_echo.php?w=640&h=352&src=http://www.cnblogs.com/yoyoketang/,儲存之後檢視,會發現返回的是亂碼遇到這種情況,主要是需要解碼,用前面學到的decode方法儲存與匯入全部會話我們可以開啟fiddler,操作完部落格園後,選中save>All Sessions,儲存全部會話儲存後,在fiddler開啟也很方便,直接把剛才儲存的會話按住拽進來就可以了3. 也可以選擇File>Load Archive匯入這個檔案
Repaly匯入請求後,可以選中某個請求,點選Repaly按鈕,重新發請求也可以ctrl+a全部選中後,點Repaly按鈕,一次性批量請求這裡儲存會話和replay功能其實就是相當於錄製和回放了
自定義會話框前言在使用fiddler抓包的時候,檢視請求型別get和post每次只有點開該請求,在Inspectors才能檢視get和post請求,不太方便。於是可以在會話框直接新增請求方式。
新增會話框選單點會話框選單(箭頭位置),右鍵彈出選項選單2. 選擇Customize columns選項,Collection選項選擇Miscellaneous
3. Field Name選擇:RequestMethod
隱藏會話選單1.選擇需要隱藏的選單,右鍵。選擇Hide this column
2.隱藏後也可以讓隱藏的選單顯示出來:Ensure all columns are visble
調整會話框選單順序1.如果需要調整會話框選單順序,如:Content-Type選單按住後往前移動,就能調整了
2.點完後上面有個上箭頭(正序),或者下箭頭(倒敘)。但是不能取消,取消的話關掉fiddler後重新開啟就行了。
http協議簡介什麼是http1.HTTP協議是Hyper Text Transfer Protocol(超文字傳輸協議)的縮寫,是用於從全球資訊網(WWW:World Wide Web )伺服器傳輸超文字到本地瀏覽器的傳送協議。2.HTTP(HyperText Transfer Protocol)協議是基於TCP的應用層協議,它不關心資料傳輸的細節,主要是用來規定客戶端和服務端的資料傳輸格式,最初是用來向客戶端傳輸HTML頁面的內容。預設埠是803.http(超文字傳輸協議)是一個基於請求與響應模式的、無狀態的、應用層的協議
二、請求報文1.HTTP請求報文主要由請求行、請求頭部、空一行、請求正文4部分組成(當然,如果不算空的一行,那就是3個部分)
2.下圖是fiddler工具抓的post請求報文(工具使用看fiddler篇),可以對照上圖,更清楚的理解http的請求報文內容。
響應報文1.HTTP響應報文主要由狀態行、訊息報頭、空一行、響應正文4部分組成(當然,如果不算空的一行,那就是3個部分)
2.下圖就是一個請求的響應內容,用fiddler抓包工具可以檢視
完整的http內容1.一個完整的http協議其實就兩塊內容,一個是發的請求,一個服務端給的響應。2.以下是請求https://github.com/timeline.json 這個地址後,用fiddler抓包匯出為文字,檢視完整的http請求內容。(具體操作檢視《fiddler 1.10會話儲存》)
內容如下:以下是請求報文
GET https://github.com/timeline.json HTTP/1.1Host: github.comUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3Accept-Encoding: gzip, deflate, brCookie: xxx(已省略)1234567以下是請求報文
GET https://github.com/timeline.json HTTP/1.1Host: github.comUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3Accept-Encoding: gzip, deflate, brCookie: xxx(已省略)X-Request-Id: d09e199dc290c6f0dc79fe49007069abX-Runtime: 0.004161Content-Security-Policy: xxx(已省略)Strict-Transport-Security: xxx(已省略)X-Content-Type-Options: nosniffX-Frame-Options: denyX-XSS-Protection: 1; mode=blockX-Runtime-rack: 0.007388X-GitHub-Request-Id: FE36:2B0A9:177175F:23C092D:594FD998Content-Length: 3791234567891011121314151617以下是響應正文(json格式)
{“message”:”Hello there, wayfaring stranger. If you’re reading this then you probably didn’t see our blog post a couple of years back announcing that this API would go away: http://git.io/17AROg Fear not, you should be able to get what you need from the shiny new Events API instead.”,”documentation_url”:”https://developer.github.com/v3/activity/events/#list-public-events”}1請求行8種請求方法1.請求行有三個主要引數:請求方法、url、協議版本。
請求方法包含:請求方式簡介get請求指定的頁面資訊,並返回實體主體。post向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案)。資料被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。HEAD類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭OPTIONS返回伺服器針對特定資源所支援的HTTP請求方法,也可以利用向web伺服器傳送‘*’的請求來測試伺服器的功能性PUT向指定資源位置上傳其最新內容DELETE請求伺服器刪除Request-URL所標識的資源TRACE回顯伺服器收到的請求,主要用於測試或診斷CONNECTHTTP/1.1協議中預留給能夠將連線改為管道方式的代理伺服器。
注意:1)方法名稱是區分大小寫的。2)最常見的的就是通常說的get和post方法。
url詳解1.開啟百度,在搜尋框輸入任意文字,搜尋後,複製位址列的url地址:
https://www.baidu.com/s?wd=%E4%B8%8A%E6%B5%B7%E6%82%A0%E6%82%A0%E5%8D%9A%E5%AE%A2&rsv_spt=1&rsv_iqid=0x91baaabd00070ba2&issp=1&f=8&rsv_bp=1&rsv_idx=212.那麼一個完整的url地址,基本格式如下:
https://host:port/path?xxx=aaa&ooo=bbb1http/https:這個是協議型別,如圖中1所示host:伺服器的IP地址或者域名,如圖中2所示port:HTTP伺服器的預設埠是80,這種情況下埠號可以省略。如果使用了別的埠,必須指明,例如:192.168.3.111:8080,這裡的8080就是埠path:訪問資源的路徑,如圖中3所示/s (圖中3是把path和請求引數放一起了)?:url裡面的?這個符號是個分割線,用來區分問號前面的是path,問號後面的是引數url-params:問號後面的是請求引數,格式:xxx=aaa,如圖4區域就是請求引數&:多個引數用&符號連線協議版本根據HTTP標準,HTTP請求可以使用多種請求方法。HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法。HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
總結如果對你有所啟發和幫助,可以點個關注、收藏,也可以留言討論,這是對作者的最大鼓勵。