HTTP知識(shí)

如何找到服務(wù)器

  • 網(wǎng)絡(luò)中部署著各種各樣的服務(wù)器,比如騰訊的服務(wù)器、百度的服務(wù)器
  • 那么問題來了?
  • 客戶端如何找到想要連接的服務(wù)器
    • 客戶端通過URL找到想要連接的服務(wù)器

URL

  • 什么是URL?

  • URL的全稱是Uniform Resource Locator(統(tǒng)一資源定位符)

  • URL就是資源的地址、位置,互聯(lián)網(wǎng)上的每個(gè)資源都有一個(gè)唯一的URL

  • URL由三部分組成:資源類型、存放資源的主機(jī)域名、資源文件名。
    eg:https://github.com/Xxm20121314/iOSMultiTechnology

    • URL的基本格式 = 協(xié)議://主機(jī)地址/路徑
    • (帶方括號(hào)[]的為可選項(xiàng)):
      protocol :// hostname[:port] / path / [;parameters][?query]#fragment
    • 協(xié)議protocol:不同的協(xié)議,代表著不同的資源查找方式、資源傳輸方式
    • 主機(jī)地址hostname:存放資源的主機(jī)(服務(wù)器)的IP地址(域名)
    • 路徑path:資源在主機(jī)(服務(wù)器)中的具體位置
    • 其他格式說明

URL中常見的協(xié)議

  • HTTP

    超文本傳輸協(xié)議,訪問的是遠(yuǎn)程的網(wǎng)絡(luò)資源,格式是http://
    http協(xié)議是在網(wǎng)絡(luò)開發(fā)中最常用的協(xié)議
    
  • https

    通過安全的 HTTPS 訪問該資源。 格式 HTTPS://
    
  • file

    訪問的是本地計(jì)算機(jī)上的資源,格式是file:///(不用加主機(jī)地址)
    
  • mailto

    訪問的是電子郵件地址,格式是mailto:
    
  • FTP

    訪問的是共享主機(jī)的文件資源,格式是ftp://
    

HTTP協(xié)議的作用

  • HTTP的全稱是Hypertext Transfer Protocol,超文本傳輸協(xié)議
  • 規(guī)定客戶端和服務(wù)器之間的數(shù)據(jù)傳輸格式
  • 讓客戶端和服務(wù)器能有效地進(jìn)行數(shù)據(jù)溝通

HTTP協(xié)議的特點(diǎn)(為什么選擇HTTP)

  • 簡(jiǎn)單快速
    因?yàn)镠TTP協(xié)議簡(jiǎn)單,所以HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快
  • 靈活
    HTTP允許傳輸各種各樣的數(shù)據(jù)
  • HTTP 0.9和1.0使用非持續(xù)連接
    限制每次連接只處理一個(gè)請(qǐng)求,服務(wù)器對(duì)客戶端的請(qǐng)求做出響應(yīng)后,馬上斷開連接,這種方式可以節(jié)省傳輸時(shí)間

HTTP的基本通信過程

完整的http通信可以分為2大步驟

  • 請(qǐng)求:客戶端向服務(wù)器索要數(shù)據(jù)
  • 響應(yīng):服務(wù)器返回客戶端相應(yīng)的數(shù)據(jù)

發(fā)送HTTP請(qǐng)求的方法

在HTTP/1.1協(xié)議中,定義了8種發(fā)送http請(qǐng)求的方法
GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT、PATCH
根據(jù)HTTP協(xié)議的設(shè)計(jì)初衷,不同的方法對(duì)資源有不同的操作方式

  • PUT :增
  • DELETE :刪
  • POST:改
  • GET:查

最常用的是GET和POST(實(shí)際上GET和POST都能辦到增刪改查)

HTTP通信過程 - 請(qǐng)求

  • HTTP協(xié)議規(guī)定:1個(gè)完整的由客戶端發(fā)給服務(wù)器的HTTP請(qǐng)求中包含以下內(nèi)容
  • 請(qǐng)求頭:包含了對(duì)客戶端的環(huán)境描述、客戶端請(qǐng)求信息等
    • GET /minion.png HTTP/1.1 // 包含了請(qǐng)求方法、請(qǐng)求資源路徑、
    • HTTP協(xié)議版本
    • Host: 192.168.2.9:60381 // 客戶端想訪問的服務(wù)器主機(jī)地址
    • User-Agent: Mozilla/5.0 // 客戶端的類型,客戶端的軟件環(huán)境
    • Accept: text/html, / // 客戶端所能接收的數(shù)據(jù)類型
    • Accept-Language: zh-cn // 客戶端的語言環(huán)境
    • Accept-Encoding: gzip // 客戶端支持的數(shù)據(jù)壓縮格式
  • 請(qǐng)求體:客戶端發(fā)給服務(wù)器的具體數(shù)據(jù),比如文件數(shù)據(jù)(POST請(qǐng)求才會(huì)有)

HTTP通信過程 - 響應(yīng)

  • 客戶端向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器應(yīng)當(dāng)做出響應(yīng),即返回?cái)?shù)據(jù)給客戶端

  • HTTP協(xié)議規(guī)定:1個(gè)完整的HTTP響應(yīng)中包含以下內(nèi)容

  • 響應(yīng)頭:包含了對(duì)服務(wù)器的描述、對(duì)返回?cái)?shù)據(jù)的描述

    • HTTP/1.1 200 OK // 包含了HTTP協(xié)議版本、狀態(tài)碼、狀態(tài)英文名稱
    • Server: Apache-Coyote/1.1 // 服務(wù)器的類型
    • Content-Type: image/jpeg // 返回?cái)?shù)據(jù)的類型
    • Content-Length: 6000 // 返回?cái)?shù)據(jù)的長(zhǎng)度
    • Date: Mon, 23 Jun 2019 12:54:52 GMT // 響應(yīng)的時(shí)間
  • 響應(yīng)體:服務(wù)器返回給客戶端的具體數(shù)據(jù),比如文件數(shù)據(jù)

常見響應(yīng)狀態(tài)碼

狀態(tài)碼 英文名稱 中文描述
200 OK 請(qǐng)求成功
400 Bad Request 客戶端請(qǐng)求的語法錯(cuò)誤,服務(wù)器無法解析
404 Not Found 服務(wù)器無法根據(jù)客戶端的請(qǐng)求找到資源
500 Internal Server Error 服務(wù)器內(nèi)部錯(cuò)誤,無法完成請(qǐng)求

更多狀態(tài)碼

iOS中發(fā)送HTTP請(qǐng)求的方案

  • 在iOS中,常見的發(fā)送HTTP請(qǐng)求的方案有

  • 蘋果原生(自帶)

    • NSURLConnection:用法簡(jiǎn)單,最古老最經(jīng)典最直接的一種方案【坑比較多】
    • NSURLSession:功能比NSURLConnection更加強(qiáng)大,蘋果目前比較推薦使用這種技術(shù)【2013推出,iOS7開始出的技術(shù)】
    • CFNetwork:NSURL*的底層,純C語言
  • 第三方框架

  • ASIHttpRequest:功能極其強(qiáng)大,可惜早已停止更新

  • AFNetworking:簡(jiǎn)單易用,提供了基本夠用的常用功能,維護(hù)和使用者多

  • MKNetworkKit:簡(jiǎn)單易用,目前作者也沒有繼續(xù)維護(hù)了

  • 為了提高開發(fā)效率,企業(yè)開發(fā)用的基本是第三方框架

目錄

NSURLConnection的使用
NSURLSession知識(shí)點(diǎn)的基本步驟

Github地址:iOSMultiTechnology
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、基礎(chǔ)概念 HTTP( HyperText Transfer Protocol, 超文本傳輸協(xié)議 ) 是一種通信...
    zouyang0921閱讀 1,701評(píng)論 0 2
  • 前言 這篇文章本來是我一年多前看《圖解HTTP》做的筆記,但記完后放在文件夾的某個(gè)角落一直沒管。前段時(shí)間擼項(xiàng)目練手...
    Srtian閱讀 1,092評(píng)論 0 10
  • 輸入域名到顯示網(wǎng)頁的網(wǎng)絡(luò)過程 5層網(wǎng)絡(luò)模型介紹 低三層 物理層主要作用是定義物理設(shè)備如何傳輸數(shù)據(jù)數(shù)據(jù)鏈路層在通信的...
    谷子多閱讀 875評(píng)論 0 0
  • http協(xié)議有http0.9,http1.0,http1.1和http2三個(gè)版本,但是現(xiàn)在瀏覽器使用的是htt...
    一現(xiàn)_閱讀 1,990評(píng)論 0 3
  • 最近互聯(lián)網(wǎng)這個(gè)圈子不是很太平,繼阿里縮招降薪,導(dǎo)致很多同學(xué)“被擁抱變化”之后,百度也宣布暫時(shí)停止社招了。于是有人疾...
    Sheepy閱讀 4,831評(píng)論 6 47

友情鏈接更多精彩內(nèi)容