IOS 處理 GET請求和POST請求

2021-07-12 00:27:43 字數 2161 閱讀 4859

get和post是兩種最常用的與伺服器進行互動的http方法 .

get的語義是獲取指定的url資源, 將資料按照 variable = value 的形式, 新增到action所指向的url後面, 並且兩者使用 ' ? '連線, 各變數之間使用 ' & '連線 .

對使用者來說不安全, 因為在傳輸過程中, 資料被放在請求的url中.

傳輸的資料量小, 這主要是因為受url長度限制.

在http協議中,其實並沒有對url長度作出限制,往往url的最大長度和使用者瀏覽器和web伺服器有關,不一樣的瀏覽器,能接受的最大長度往往是不一樣的,當然,不一樣的web伺服器能夠處理的最大長度的url的能力也是不一樣的。

ie瀏覽器對url的最大限制為2083個字元,如果超過這個數字,提交按鈕沒有任何反應。

firefox瀏覽器url的長度限制為65,536個字元 ;

apache(server)能夠接受的最大url長度為8192個字元 ;

如果瀏覽器的編碼為utf8的話,乙個漢字最終編碼後的字元長度為9個字元。

post

post語義是向指定url的資源新增資料.

將資料放在資料體中, 按照變數和值相對應的方式, 傳遞到action所指向的url.

所有資料對使用者來說不可見.

可以傳輸大量資料, 上傳檔案只能使用post.

在瀏覽器中判斷get&post請求

因為post請求會向伺服器傳送資料體, 因此重新整理頁面時會出現提示視窗. 而get請求不會向伺服器傳送資料體, 因此沒有提示 . 

從請求本質來看, get請求要比post更安全, 效率也會更高 .(對伺服器而言)

1、同步請求可以從網際網路請求資料,一旦傳送同步請求,程式將停止使用者互動,直至伺服器返回資料完成,才可以進行下一步操作,

2、非同步請求不會阻塞主線程,而會建立乙個新的執行緒來操作,使用者發出非同步請求後,依然可以對ui進行操作,程式可以繼續執行

3、get請求,將引數直接寫在訪問路徑上。操作簡單,不過容易被外界看到,安全性不高,位址最多255位元組;

4、post請求,將引數放到body裡面。post請求操作相對複雜,需要將引數和位址分開,不過安全性高,引數放在body裡面,不易**獲。

1> 例項化url( 網路資源 ) ;

2> 根據url建立urlrequest ( 網路請求 ) ;

預設為get請求; 對於post請求,  需要建立請求的資料體 .

3> 利用 urlconnection 傳送網路請求(傳送請求並獲得結果) ; 

nsurlconnection提供了兩個靜態方法可以直接以同步或非同步的方式向伺服器傳送網路請求.

同步請求:

sendsynchronousrequest : returningresponse : error :

非同步請求:

sendasynchronousrequest : queue : completionhandler :

在網路請求過程中, 接收資料的過程實際上是通過 nsurlconnectiondatadelegate來實現的, 常用**方法包括:?

1

2

3

4

5

6

7

8

// 伺服器開始返回資料

-(void)connection:didreceiveresponse:

// 收到伺服器返回的資料,本方法會被呼叫多次

-(void)connection:didreceivedata:

// 資料接收完畢,做資料的最後處理

-(void)connectiondidfinishloading:

// 網路連線錯誤

-(void)connection:didfailwitherror:

get請求和post請求

1.get請求的請求資料在url中,post請求的請求資料在請求體中 2.資料長度,get請求有長度限制,post請求的長度限制由伺服器決定 3.資料安全性,兩者都不安全,但post相對安全一些 4.應用場景不同,get請求一般用於訪問頁面,post請求一般用於上傳資料 response reque...

GET請求和POST請求

http請求,由客戶端向服務端發出,可以分為四部分內容 請求方法 request method 請求的 request url 請求頭 request headers 請求體 request body 請求方法有get head post put delete options connect tra...

get請求和post請求

一 使用requests傳送get請求 二 使用urllib傳送get請求 urllib3主要使用連線池進行網路的訪問,以訪問之前我們需要建立乙個連線池物件 備註 這邊會有警告,這是因為urllib3時代,官方強制要求驗證http安全證書,如果沒有通過不能通過請求,這邊新增 urllib3.disa...