網(wǎng)絡(luò)中的請求分很多種,不過最常見的兩種一種是Get請求束倍。一種是Post請求被丧。get請求占常用的80%,默認(rèn)的http請求就是get請求绪妹。
1.HTTP請求甥桂。
- 一般請求采用restful 設(shè)計風(fēng)格:采用相同url 不同的http 實現(xiàn)不同的功能。
- 利用不同請求邮旷,實現(xiàn)了 增/刪/改/查的功能黄选。
- PUT 增 在服務(wù)器新增123的信息
- DELETE 刪
- POST 改
- GET 查
- HEAD 獲取文件的大小。
- Range 這個可以解決斷點續(xù)傳婶肩。
办陷!一般開發(fā)中,后臺將post方法 替代Put和delete.
http內(nèi)部走的是socket/ (tcp/ip)律歼。 默認(rèn)情況下民镜,tcp / ip 是一個‘長連接’。
長連接:與服務(wù)器建立連接之后险毁,就不會自動斷開制圈。聊天/推送 心跳包。是保證持續(xù)連接的持續(xù)辱揭。
短連接:一次連接离唐,服務(wù)器只處理一個請求。然后自動斷開連接问窃。
http 是一個特殊處理的tcp/ip 協(xié)議。是一個短連接完沪。
2.Get請求的特點:
- Get請求的參數(shù)都拼接在url后面域庇。并且url長度是有限制的。Get請求發(fā)送參數(shù)的長度有限覆积。不能無限延長听皿。
- 多謝4L-(lvjsky)的提醒。(get 有字?jǐn)?shù)限制 post沒有宽档。字?jǐn)?shù)限制是瀏覽器限制尉姨,和get請求方式無關(guān)。HTTP協(xié)議規(guī)范并沒有規(guī)定明確get請求的字?jǐn)?shù)限制)
各瀏覽器HTTP Get請求URL最大長度并不相同吗冤,幾類常用瀏覽器最大長度及超過最大長度后提交情況如下:
IE6.0 :url最大長度2083個字符又厉,超過最大長度后無法提交九府。
IE7.0 :url最大長度2083個字符,超過最大長度后仍然能提交覆致,但是只能傳過去2083個字符侄旬。
firefox 3.0.3 :url最大長度7764個字符,超過最大長度后無法提交煌妈。
Opera 9.52 :url最大長度7648個字符儡羔,超過最大長度后無法提交。
Google Chrome 2.0.168 :url最大長度7713個字符璧诵,超過最大長度后無法提交汰蜘。
- Get請求是不安全的.參數(shù)內(nèi)容暴漏在url中,對于安全性比較高的請求不能使用Get請求之宿。
- 請求默認(rèn)會在本地做數(shù)據(jù)緩存鉴扫。
3.get請求的格式。
//拼接網(wǎng)絡(luò)請求的字符串澈缺。坪创?后面的就是你的Get請求的內(nèi)容
NSString * string = [NSString stringWithFormat:@"http://127.0.0.1/login/login.php?%@",urlstring];
NSURL * url = [NSURL URLWithString:string];
// 創(chuàng)建網(wǎng)絡(luò)請求
NSURLRequest * request = [NSURLRequest requestWithURL:url];
//發(fā)送請求
[[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData* _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
請求回調(diào)成功 data數(shù)據(jù)就是你要的內(nèi)容。
if (data && !error) {
}] resume];
```
###4.Post請求姐赡。
- post 請求的網(wǎng)絡(luò)請求需要是一個可變請求莱预。
- post 請求需要設(shè)置 請求頭和請求體。
###5.Post請求的格式项滑。
// 創(chuàng)建網(wǎng)絡(luò)請求
NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/login/login.php"];
// 可變請求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:15];
// 設(shè)置請求方法 這里的POST可以大寫也可以小寫依沮。
request.HTTPMethod = @"POST";
// 這里設(shè)置請求體。請求體的格式要求是NSdata格式
request.HTTPBody = ["這里返回的是請求體枪狂。需要是NSdata格式"]危喉;
// 發(fā)送請求
[[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
// 成功
if (data && !error) {
}] resume];
###6.Get請求和Post請求的區(qū)別。
- get 不安全 post安全
- get 有字?jǐn)?shù)限制 post沒有
- get 有緩存 post沒有緩存
- get 請求不需要設(shè)置請求頭和請求體