iOS中HTTP傳輸協(xié)議
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評論(0)
一、HTTP協(xié)議
HTTP本質(zhì)上是一種協(xié)議,全稱是Hypertext Transfer Protocol,即超文本傳輸協(xié)議。從名字上可以看出該協(xié)議用于規(guī)定客戶端與服務(wù)端之間的傳輸規(guī)則,所傳輸?shù)膬?nèi)容不局限于文本(其實(shí)可以傳輸任意類型的數(shù)據(jù))。
圖1.1傳輸示意圖.png
二、HTTP請求與響應(yīng)的內(nèi)容
當(dāng)我們往服務(wù)端發(fā)送一條HTTP請求時(shí)都發(fā)送了哪些東西過去呢?
先看一個(gè)POST請求的示例圖:
圖2.1 HTTP_POST請求示例.png
注:本文使用Paw來模擬發(fā)送HTTP請求,使用Charles抓包,Charles選中“Request”以及“Raw”選項(xiàng)就可以看到請求的全部內(nèi)容
以上示例圖中其實(shí)已經(jīng)包含了一個(gè)HTTP請求所必備的幾大要素:請求行、請求頭(headerField)、請求體(body);同理,響應(yīng)也有狀態(tài)行、響應(yīng)頭、實(shí)體內(nèi)容。接下來我們逐個(gè)展開。
1、請求行
請求行包含請求方法(Method)、請求統(tǒng)一資源標(biāo)識符(URI)、HTTP版本號,如圖2.1第一行所示:
圖2.2 請求行.png
請求方法就是我們所熟悉的POST、GET、HEAD、PUT等
URI就是URL中排除掉Host剩下的部分,也就是資源在服務(wù)器本地上的路徑
HTTP版本號,目前主流的版本是1.1(1999年開始采用),最新的版本是2.0(2015年5月發(fā)布)。不同版本之間差異下面會再展開
2、請求頭
請求頭主要存放對客戶端想給服務(wù)端的附加信息,下圖框框的部分就是請求頭:
圖2.3 請求頭.png
HTTP請求在iOS中用NSURLRequest與NSMutableRequest表示;HTTP響應(yīng)用NSHTTPURLResponse表示。
Host: 目標(biāo)服務(wù)器的網(wǎng)絡(luò)地址
Accept: 讓服務(wù)端知道客戶端所能接收的數(shù)據(jù)類型,如text/html */*
Content-Type: body中的數(shù)據(jù)類型,如application/json; charset=UTF-8
Accept-Language: 客戶端的語言環(huán)境,如zh-cn
Accept-Encoding: 客戶端支持的數(shù)據(jù)壓縮格式,如gzip
User-Agent: 客戶端的軟件環(huán)境,我們可以更改該字段為自己客戶端的名字,比如QQ music v1.11,比如瀏覽器Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/600.8.9 (KHTML, like Gecko) Maxthon/4.5.2
Connection: keep-alive,該字段是從HTTP 1.1才開始有的,用來告訴服務(wù)端這是一個(gè)持久連接,“請服務(wù)端不要在發(fā)出響應(yīng)后立即斷開TCP連接”。關(guān)于該字段的更多解釋將在后面的HTTP版本簡介中展開。
Content-Length: body的長度,如果body為空則該字段值為0。該字段一般在POST請求中才會有。
POST請求的body請求體也有可能是空的,因此POST中Content-Length也有可能為0
Cookie: 記錄者用戶信息的保存在本地的用戶數(shù)據(jù),如果有會被自動附上
值得一提的是,在iOS中當(dāng)你發(fā)送一個(gè)任意請求時(shí),不管你愿不愿意,NSURLRequest都會自動幫你記錄你所訪問的URL上設(shè)置的cookie。在iOS中用NSHTTPCookieStorage表示,是一個(gè)單例。通過
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage]; for (NSHTTPCookie *cookie in [cookieJar cookies]) { NSLog(@“%@”, cookie); }
可以獲取目前被自動保存的所有cookie。對cookie的操作感興趣的請移步iOS中http請求使用cookie這篇文章。
?
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
下載地址
iOS中HTTP傳輸協(xié)議下載
相關(guān)電子資料下載
- iOS17.1可能明天發(fā)布,iOS17.1主要修復(fù)哪些問題? 380
- 安信可Ai-WB2模組HTTP 客戶端 HEAD和GET 請求方法 78
- 【XR806開發(fā)板試用】通過http請求從心知天氣網(wǎng)獲取天氣預(yù)報(bào)信息 72
- Ai-WB2模組HTTP客戶端HEAD和GET請求方法 98
- 如何使用Proxyman抓取Android的https請求? 43
- 基于OkHttp 3.10.0的源碼案例解析 26
- 不用Nginx,只用Tomcat的Http請求流程 112
- 冪等和非冪等請求的一些定義和分析 77
- 8種常用網(wǎng)絡(luò)協(xié)議有哪些 78
- 23張圖帶你弄懂HTTP協(xié)議! 61