幾種常見網路請求方式

2021-07-12 05:26:06 字數 4505 閱讀 3222

head: 只請求頁面的首部,head和get本質是一樣的,區別在於head不含有呈現資料,而僅僅是http頭資訊,用於檢查物件是否存在,以及得到物件的元資料。

post: 向伺服器提交資料,請求伺服器接受所指定的文件作為對所標識的uri的新的從屬實體。

put: 從客戶端向伺服器傳送的資料取代指定的文件的內容,put和post極為相似,都是向伺服器傳送資料,但它們之間有乙個重要區別,put通常指定了資源的存放位置,而post則沒有,post的資料存放位置由伺服器自己決定。

delete: 請求伺服器刪除指定的頁面或某乙個資源。

options: 允許客戶端檢視伺服器的效能。

trace: 請求伺服器在響應中的實體主體部分返回所得到的內容。

patch: 實體中包含乙個表,表中說明與該uri所表示的原內容的區別,用於部分文件更改。

extension-mothed:在不改動協議的前提下,可增加另外的方法

根據http協議的設計初衷,不同的方法對資源有不同的操作方式

put :增

delete :刪

post:改

get:查

get和post的區別使用:

(1)如果要傳遞大量資料,比如檔案上傳,只能用post請求

(2)get的安全性比post要差些,如果包含機密\敏感資訊,建議用post

(3)如果僅僅是索取資料(資料查詢),建議使用get

(4)如果是增加、修改、刪除資料,建議使用post

get 和 post兩種網路請求方式的同步和非同步連線

get 同步

//1.建立**字串

nsstring *urlstr = @"";

編碼 對於**中有中文的 需要更改編碼格式

nsstring *newstring = [urlstr

stringbyaddingpercentescapesusingencoding:nsutf8stringencoding];

//3.建立nsurl物件

nsurl *url = [nsurl urlwithstring:newstring];

//4.建立請求物件 nsurlrequest

nsurlrequest *request = [nsurlrequest requestwithurl:url];

//5.同步請求

nsurlresponse *response = nil;//伺服器響應物件 儲存伺服器響應資訊 返回資料的長度 資料的型別等

nserror *error = nil;//儲存連線錯誤資訊 如連線失敗 網路中斷等

nsdata *data = [nsurlconnection sendsynchronousrequest:request returningresponse:&response error:&error];//data就是通過**從伺服器請求到的資料

//解析資料 供介面上顯示

[self parsedatawithdata:data];

get 非同步

//1.建立**字串

nsstring *urlstr = @"";

編碼 (**中存在中文)

nsstring *newstr = [urlstr stringbyaddingpercentescapesusingencoding:nsutf8stringencoding];

//3.建立nsurl物件

nsurl *url = [nsurl urlwithstring:newstr];

//4.建立**請求物件

nsurlrequest *request = [nsurlrequest requestwithurl:url];

//5.******非同步請求第一種方式*******block形式********

[nsurlconnection sendasynchronousrequest:request queue:[nsoperationqueue mainqueue] completionhandler:^(nsurlresponse *response, nsdata *data, nserror *connectionerror) ];

//********非同步請求第二種方式******delegate******

[nsurlconnection connectionwithrequest:request delegate:self];

}#pragma mark - nsurlconnectiondatadelegate -

//收到伺服器的響應

- (void)connection:(nsurlconnection *)connection didreceiveresponse:(nsurlresponse *)response

//收到伺服器資料

- (void)connection:(nsurlconnection *)connection didreceivedata:(nsdata *)data

//傳輸資料完畢時

- (void)connectiondidfinishloading:(nsurlconnection *)connection

//連線失敗時

- (void)connection:(nsurlconnection *)connection didfailwitherror:(nserror *)error

post同步

//1.建立**字串

nsstring *str = [nsstring stringwithformat:kurl];

//2.建立nsurl物件

nsurl *url = [nsurl urlwithstring:str];

//3.建立請求物件

nsmutableurlrequest *requset = [nsmutableurlrequest requestwithurl:url];

//4.建立引數字串

//5.設定請求體 將引數字串轉化為nsdata物件

//6.設定請求方式

//7.同步連線

nsdata *data = [nsurlconnection sendsynchronousrequest:requset returningresponse:nil error:nil];

//8.解析

[self parsedata:data];

post非同步

//1.建立**字串

nsstring *str = [nsstring stringwithformat:kurl];

//2.建立url物件

nsurl *url = [nsurl urlwithstring:str];

//3.建立請求物件

nsmutableurlrequest *request = [nsmutableurlrequest requestwithurl:url];

//4.建立引數字串

//5.設定請求體 將引數字串轉化為nsdata物件

//6.設定請求方式

//7.非同步連線

******非同步請求第一種方式*******block形式********

[nsurlconnection sendasynchronousrequest:request queue:[nsoperationqueue mainqueue] completionhandler:^(nsurlresponse *response, nsdata *data, nserror *connectionerror) ];

//********非同步請求第二種方式******delegate******

[nsurlconnection connectionwithrequest:request delegate:self];

}//連線成功

- (void)connection:(nsurlconnection *)connection didreceiveresponse:(nsurlresponse *)response

//接收資料

- (void)connection:(nsurlconnection *)connection didreceivedata:(nsdata *)data

//接收資料完畢

- (void)connectiondidfinishloading:(nsurlconnection *)connection

//- (void)connection:(nsurlconnection *)connection didfailwitherror:(nserror *)error

//解析資料

- (void)parsedata:(nsdata *)data

常見請求方式區別

常用的請求方法裡面get請求和post請求我們都非常熟悉了,今天來談談post,put以及patch,在了解這些之前我們先理解乙個概念 冪等性 冪等性 http協議本身是一種面向資源的應用層協議,但對http協議的使用實際上存在著兩種不同的方式 一種是restful的,它把http當成應用層協議,比...

HTTP的幾種請求方式

基於http的請求方式一共有八種。get請求 這種方法是將資訊儲存在url中,既不安全,還無法傳遞太大的資料。官方說明 向特定的路徑資源發出請求。注意 get方法不應當被哦那個與產生 的操作中。一般的網路爬蟲都會從get入手。post 向指定的路徑提交資料進行處理請求,一般用於表單的提交資料。注意 ...

非同步請求的幾種方式

1.最原始的js new xmlhttprequest 由於瀏覽器相容的原因,複雜,多使用基於jquery的非同步請求方法 內部封裝 2.基於jquery的ajax方法 1 load url,data callback 例項如下 test load test.php function 2 getjs...