URL&HTTP協議&GET請求&POST請求


1.什么是URL

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

    通過1URL,能找到互聯網上唯一的1個資源

     URL就是資源的地址、位置,互聯網上的每個資源都有一個唯一的URL

     URL的基本格式 = 協議://主機地址/路徑   http://202.108.22.5/img/bdlogo.gif

協議:不同的協議,代表着不同的資源查找方式、資源傳輸方式.1>HTTP://   表示采用HTTP協議,

主機地址:存放資源的主機的IP地址(域名)2>202.208.225/  這是我的本地服務器地址,

路徑:資源在主機中的具體位置3>img/bdlogo.gif  這是我要訪問的數據在我服務器上的路徑

 

2.URL中常見的協議:

    • HTTP
    • 超文本傳輸協議,訪問的是遠程的網絡資源,格式是http://
    • http協議是在網絡開發中最常用的協議
    • file
    • 訪問的是本地計算機上的資源,格式是file://(不用加主機地址)
    • mailto
    • 訪問的是電子郵件地址,格式是mailto:
    • FTP
    • 訪問的是共享主機的文件資源,格式是ftp://
  • HTTP協議簡介
    • HTTP協議的作用
    • HTTP的全稱是Hypertext Transfer Protocol,超文本傳輸協議
    • 規定客戶端和服務器之間的數據傳輸格式
    • 讓客戶端和服務器能有效地進行數據溝通
    • HTTP協議的特點(目前Xcode默認支持HTTPS協議)
    • 簡單快速
    • 因為HTTP協議簡單,所以HTTP服務器的程序規模小,因而通信速度很快
    • 靈活
    • HTTP允許傳輸任意類型的數據
    • HTTP 0.91.0使用非持續連接
    • 限制每次連接只處理一個請求,服務器對客戶端的請求做出響應后,馬上斷開連接,這種方式可以節省傳輸時間
    • HTTP的基本通信過程:
    1. 要想使用HTTP協議向服務器索取數據,要了解HTTP通信過程
    • 完整的http通信可以分為2大步驟
    • 請求:客戶端向服務器索要數據
    • 響應:服務器返回客戶端相應的數據
    1. iOS中發送HTTP請求的方案
    • iOS中,常見的發送HTTP請求的方案有
    • 蘋果原生(自帶)
    • NSURLConnection:用法簡單,最古老最經典最直接的一種方案
    • NSURLSessioniOS 7新出的技術,功能比NSURLConnection更加強大
    • CFNetworkNSURL*的底層,純C語言
    • 第三方框架
    • ASIHttpRequest:外號“HTTP終結者”,功能極其強大,可惜早已停止更新
    • AFNetworking:簡單易用,提供了基本夠用的常用功能,維護和使用者多
    • MKNetworkKit:簡單易用,產自三哥的故鄉印度,維護和使用者少
    • 建議
    • 為了提高開發效率,企業開發用的基本是第三方框架
    1. 發送HTTP請求的方法:
    • HTTP/1.1協議中,定義了8種發送http請求的方法
    • GETPOSTOPTIONSHEADPUTDELETETRACECONNECTPATCH
    • 根據HTTP協議的設計初衷,不同的方法對資源有不同的操作方式
    • PUT :增
    • DELETE :刪
    • POST:改
    • GET:查
    • 最常用的是GETPOST(實際上GETPOST都能辦到增刪改查)
    • 要想使用GETPOST請求跟服務器進行交互,得先了解一個概念
    • 參數
    • 就是傳遞給服務器的具體數據,比如登錄時的帳號、密碼
    1. GETPOST的主要區別表現在數據傳遞上
    • GET
    • 在請求URL后面以?的形式跟上發給服務器的參數,多個參數之間用&隔開,比如

                     http://ww.test.com/login?username=123&pwd=234&type=JSON

    • 由於瀏覽器和服務器對URL長度有限制,因此在URL后面附帶的參數是有限制的,通常不能超過1KB
    • POST
    • 發給服務器的參數全部放在請求體中
    • 理論上,POST傳遞的數據量沒有限制(具體還得看服務器的處理能力)
    1. GETPOST的選擇
    • 選擇GETPOST的建議
    • 如果要傳遞大量數據,比如文件上傳,只能用POST請求
    • GET的安全性比POST要差些,如果包含機密\敏感信息,建議用POST
    • 如果僅僅是索取數據(數據查詢),建議使用GET
    • 如果是增加、修改、刪除數據,建議使用POST
    1. HTTP協議規定1個完整的由客戶端發給服務器HTTP請求中包含以下內容
    • 請求行:包含了請求方法請求資源路徑HTTP協議版本

                        GET /LDServer/resources/images/1.jpg HTTP/1.1

                從請求行中得到的信息:1>發送的是GET請求,2>服務器名稱:LDServer,

                        3>資源路徑:resources/images/1.jpg  4>協議的版本:1.1

    • 請求頭:包含了對客戶端的環境描述、客戶端請求的主機地址等信息

                     Host: 192.168.1.105:8080     // 客戶端想訪問的服務器主機地址

                                                 如果在百度上查找東西訪問的是百度的服務器,在谷歌上訪問的就是谷歌的服務器.

                     User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9) Firefox/30.0            

                                                         // 客戶端的類型,客戶端的軟件環境

                                                          Macintosh; Intel Mac OS X 10.9:表示我是用的Mac電腦

                    Mozilla/5.0,Firefox/30.0:表示我是實用的是火狐瀏覽器

                    在QQ空間上看到說說的下面會有手機版本,就是通過這個實現的

Accept: text/html, */*     // 客戶端所能接收的數據類型,txt和html格式的文件.*/*表示所有文件都能接收

Accept-Language: zh-cn     // 客戶端的語言環境:中文

Accept-Encoding: gzip     // 客戶端支持的數據壓縮格式

    • 請求體:客戶端發給服務器的具體數據,比如文件數據
    1. HTTP通信過程 - 響應
    • 客戶端向服務器發送請求,服務器應當做出響應,即返回數據給客戶端
    • HTTP協議規定1個完整的HTTP響應中包含以下內容
    • 狀態行:包含了HTTP協議版本狀態碼狀態英文名稱 HTTP/1.1 200 OK(常見狀態碼見下圖)
    • 響應頭:包含了對服務器的描述、對返回數據的描述

        Server: Apache-Coyote/1.1         // 服務器的類型

        Content-Type: image/jpeg         // 返回數據的類型

        Content-Length: 56811         // 返回數據的長度

        Date: Mon, 23 Jun 2015 12:54:52 GMT    // 響應的時間

    • 實體內容:服務器返回給客戶端的具體數據,比如文件數據
          •       (這個是我們需要的主體內容,即方法返回的Data數據,需要解析的數據)

 

        • GET方法POST方法總結:
        • HTTP通信過程"
        • NSURLResponse
        • 1.NSMutableURLRequest   NSURLRequest 的子類,只有NSMutableURLRequest 才能設置超時,超時是request的屬性,GET,POST無關

          Request.timeoutInterval = 5;

          2.路徑中(生成URL之前的路徑)不可以有中文,如果字符串路徑中有中文需要進行轉碼,我們在地址欄中輸入有中文的路徑后是瀏覽器自動幫忙轉碼后再發送請求.

        • 發送JSON數據給服務器:
        • 多值參數:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM