關於http請求

網絡中的請求分不少種,不過最多見的兩種一種是Get請求。一種是Post請求。get請求佔經常使用的80%,默認的http請求就是get請求。

1.HTTP請求。

  • 通常請求採用restful 設計風格:採用相同url 不一樣的http 實現不一樣的功能。
  • 利用不一樣請求,實現了 增/刪/改/查的功能。
  • PUT 增 在服務器新增123的信息
  • DELETE 刪
  • POST 改
  • GET 查
  • HEAD 獲取文件的大小。
  • Range 這個能夠解決斷點續傳。

!通常開發中,後臺將post方法 替代Put和delete.

  • http內部走的是socket/ (tcp/ip)。 默認狀況下,tcp / ip 是一個‘長鏈接’。php

  • 長鏈接:與服務器創建鏈接以後,就不會自動斷開。聊天/推送 心跳包。是保證持續鏈接的持續。瀏覽器

  • 短鏈接:一次鏈接,服務器只處理一個請求。而後自動斷開鏈接。緩存

  • http 是一個特殊處理的tcp/ip 協議。是一個短鏈接。安全

2.Get請求的特色:

  • Get請求的參數都拼接在url後面。而且url長度是有限制的。Get請求發送參數的長度有限。不能無限延長。
  • 多謝4L-(lvjsky)的提醒。(get 有字數限制 post沒有。字數限制是瀏覽器限制,和get請求方式無關。HTTP協議規範並無規定明確get請求的字數限制)

各瀏覽器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請求是不安全的.參數內容暴漏在url中,對於安全性比較高的請求不能使用Get請求。
  • 請求默認會在本地作數據緩存。

3.get請求的格式。

//拼接網絡請求的字符串。?後面的就是你的Get請求的內容
    NSString * string = [NSString stringWithFormat:@"http://127.0.0.1/login/login.php?%@",urlstring];
  
    NSURL * url = [NSURL URLWithString:string];
     // 建立網絡請求
    NSURLRequest * request = [NSURLRequest requestWithURL:url];
    //發送請求
    [[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData*  _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        請求回調成功 data數據就是你要的內容。
        if (data && !error) {
            
 
    }] resume];
    ```

### 4.Post請求。
- post 請求的網絡請求須要是一個可變請求。
- post 請求須要設置 請求頭和請求體。

### 5.Post請求的格式。
```objc


//  建立網絡請求
    NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/login/login.php"];
    
    // 可變請求
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:15];
    
    //  設置請求方法 這裏的POST能夠大寫也能夠小寫。
    request.HTTPMethod = @"POST";
   // 這裏設置請求體。請求體的格式要求是NSdata格式
    request.HTTPBody = ["這裏返回的是請求體。須要是NSdata格式"];
    // 發送請求
    [[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        // 成功
        if (data && !error) {
            
           
    }] resume];

6.Get請求和Post請求的區別。

  • get 不安全 post安全
  • get 有字數限制 post沒有
  • get 有緩存 post沒有緩存
  • get 請求不須要設置請求頭和請求體
相關文章
相關標籤/搜索