吴忠躺衫网络科技有限公司

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>通訊/手機(jī)編程>

iOS中HTTP傳輸協(xié)議

大小:0.3 MB 人氣: 2017-09-26 需要積分:1

  一、HTTP協(xié)議

  HTTP本質(zhì)上是一種協(xié)議,全稱是Hypertext Transfer Protocol,即超文本傳輸協(xié)議。從名字上可以看出該協(xié)議用于規(guī)定客戶端與服務(wù)端之間的傳輸規(guī)則,所傳輸?shù)膬?nèi)容不局限于文本(其實(shí)可以傳輸任意類型的數(shù)據(jù))。

  iOS中HTTP傳輸協(xié)議

  圖1.1傳輸示意圖.png

  二、HTTP請(qǐng)求與響應(yīng)的內(nèi)容

  當(dāng)我們往服務(wù)端發(fā)送一條HTTP請(qǐng)求時(shí)都發(fā)送了哪些東西過(guò)去呢?

  先看一個(gè)POST請(qǐng)求的示例圖:

  iOS中HTTP傳輸協(xié)議

  圖2.1 HTTP_POST請(qǐng)求示例.png

  注:本文使用Paw來(lái)模擬發(fā)送HTTP請(qǐng)求,使用Charles抓包,Charles選中“Request”以及“Raw”選項(xiàng)就可以看到請(qǐng)求的全部?jī)?nèi)容

  以上示例圖中其實(shí)已經(jīng)包含了一個(gè)HTTP請(qǐng)求所必備的幾大要素:請(qǐng)求行、請(qǐng)求頭(headerField)、請(qǐng)求體(body);同理,響應(yīng)也有狀態(tài)行、響應(yīng)頭、實(shí)體內(nèi)容。接下來(lái)我們逐個(gè)展開。

  1、請(qǐng)求行

  請(qǐng)求行包含請(qǐng)求方法(Method)、請(qǐng)求統(tǒng)一資源標(biāo)識(shí)符(URI)、HTTP版本號(hào),如圖2.1第一行所示:

  

  圖2.2 請(qǐng)求行.png

  請(qǐng)求方法就是我們所熟悉的POST、GET、HEAD、PUT等

  URI就是URL中排除掉Host剩下的部分,也就是資源在服務(wù)器本地上的路徑

  HTTP版本號(hào),目前主流的版本是1.1(1999年開始采用),最新的版本是2.0(2015年5月發(fā)布)。不同版本之間差異下面會(huì)再展開

  2、請(qǐng)求頭

  請(qǐng)求頭主要存放對(duì)客戶端想給服務(wù)端的附加信息,下圖框框的部分就是請(qǐng)求頭:

  iOS中HTTP傳輸協(xié)議

  圖2.3 請(qǐng)求頭.png

  HTTP請(qǐng)求在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: 客戶端的語(yǔ)言環(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才開始有的,用來(lái)告訴服務(wù)端這是一個(gè)持久連接,“請(qǐng)服務(wù)端不要在發(fā)出響應(yīng)后立即斷開TCP連接”。關(guān)于該字段的更多解釋將在后面的HTTP版本簡(jiǎn)介中展開。

  Content-Length: body的長(zhǎng)度,如果body為空則該字段值為0。該字段一般在POST請(qǐng)求中才會(huì)有。

  POST請(qǐng)求的body請(qǐng)求體也有可能是空的,因此POST中Content-Length也有可能為0

  Cookie: 記錄者用戶信息的保存在本地的用戶數(shù)據(jù),如果有會(huì)被自動(dòng)附上

  值得一提的是,在iOS中當(dāng)你發(fā)送一個(gè)任意請(qǐng)求時(shí),不管你愿不愿意,NSURLRequest都會(huì)自動(dòng)幫你記錄你所訪問(wèn)的URL上設(shè)置的cookie。在iOS中用NSHTTPCookieStorage表示,是一個(gè)單例。通過(guò)

  NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage]; for (NSHTTPCookie *cookie in [cookieJar cookies]) { NSLog(@“%@”, cookie); }

  可以獲取目前被自動(dòng)保存的所有cookie。對(duì)cookie的操作感興趣的請(qǐng)移步iOS中http請(qǐng)求使用cookie這篇文章。

?

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?
      棋牌娱乐| 大发百家乐官网现金| 百家乐庄不连的概率| 百家乐官网视频游戏聊天| 德州扑克算牌器| 玩百家乐必赢的心法| 太阳百家乐官网游戏| 网络百家乐官网游戏机怎么破解| 百家乐大钱赢小钱| 百家乐官网娱乐分析软件v4.0| 太阳神网上娱乐| 摩纳哥百家乐的玩法技巧和规则 | 百家乐官网庄闲作千| 世界十大博彩公司| 索罗门百家乐的玩法技巧和规则| 百家乐官网电影网| 百乐彩博彩| 大发888官方sscptdf88yb| 澳门百家乐怎么赢钱| 百家乐官网3式打法微笑心法| 888娱乐城| 大发888下载英皇国际| 百家乐暗红色桌布| 百家乐官网庄闲机率| 百家乐网页游戏| 京城国际娱乐城| 太阳城娱乐城88| 顶级赌场连环夺宝ios下载| 百家乐扑克投注赢钱法| 百家乐官网玩法| 百家乐保单详图| 百家乐辅助工具| 地理风水24山72局杨公水法| 免费百家乐官网缩水软件| 大连百家乐官网商场| 百家乐玩法既规则| 百家乐真人百家乐皇冠开户| 百家乐娱乐注册就送| 百家乐压分技巧| 澳门百家乐鸿福厅| 百家乐游戏打水方法|