HTTP、SDK及網絡數據請求

1.http簡介
  
  http : 超文本傳輸協議(HTTP, HyperText Transfer Protocol)是互聯網上應用最普遍的一種網絡協議,全部的WWW文
  
  件都必須遵照這個協議,設計HTTP的最初目的是爲了提供發佈和接受HTML頁面的方法。
  
  HTTP是一個客戶端和服務器端請求和應答的標準(TCP)。客戶端是終端用戶,服務器端是網站。經過使用Web瀏覽器、網
  
  絡爬蟲或者其它的工具,客戶端發起一個到服務器上指定端口(默認端口爲80)的HTTP請求。

  HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議
  
  。它可使瀏覽器更加高效,使網絡傳輸減小。它不只保證計算機正確快速地傳輸超文本文檔,還肯定傳輸文檔中的哪一部
  
  分,以及哪部份內容首先顯示(如文本先於圖形)等。

2.sdk簡介
 
  軟件開發工具包(SDK Software development kit) 通常都是一些被軟件工程師用於爲特定的軟件包、軟件框架、硬件平
  
  臺、操做系統等創建應用軟件的開發工具的集合。
  
  API(Application Programming Interface,應用編程接口)其實就是操做系統留給應用程序的一個調用接口,應用程
  
  序經過調用操做系統的 API 而使操做系統去執行應用程序的命令(動做)。
  
3. 網絡數據請求(GET)

  3.1.同步get
  
  //首先將網址初始化一個能夠識別的oc的字符串
  NSString *urlStr = [NSString stringWithFormat:];
  
  //若是網址中存在中文的話,要進行URLENcode
  NSString *newStr = [urlStr stringByAddingPercentEscapesUsingEncode:NSUTF8SreingEncoding]
  
  //構建網絡URL對象
  NSURL *url = [NSURL URLWithString:newStr];
  
  //建立網絡請求
  NSURLRequest *request = [NSURLRequest requestWithURL:url];
  
  //創立鏈接
  NSURLResponse *response = nil;
 
  NSError *error = nil;
  
  NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&
   
  error];

  //解析獲得的數據
  NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragment
  
  s error:nil];
  
  3.2.異步get
  
  //建立URL
  NSURL *url = [NSURL URLWithString:@"http://172.16.12.183/index.php"];
  
  //建立請求對象
  NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

  //解析數據(BLock)
   [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
      NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];

4. 網絡數據請求(POST)

  4.1.同步post
  
  //建立URL
  NSURL *url = [NSURL URLWithString:@""];
  
  //準備請求對象
  NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
  
  [request setHTTPMethod:@"POST"];
  
  //3.準備參數
    NSString *param = [NSString stringWithFormat:@"userName=%@&password=%@",self.UserName.text,self.P
    assWard.text];
   
   //將參數轉爲NSData
    NSData *paramData = [param dataUsingEncoding:NSUTF8StringEncoding];
   
    [request setHTTPBody:paramData];
    //創立鏈接
    NSData *data = [NSURLConnection sendSynchronsRequest:request returningResponse:nil error:nil];
    
    //解析數據
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragme
    nts error:nil];
  
  4.2 異步post
  
    //1.建立URL
    NSURL *url = [NSURL URLWithString:@"http://172.16.12.183/index.php"];
    
    //2.準備請求對象
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    [request setHTTPMethod:@"POST"];
    
    //3.準備參數
    NSString *param = [NSString stringWithFormat:@"userName=%@&password=%@",self.UserName.text,self.PassWard.text];
    //將參數轉爲NSData
    NSData *paramData = [param dataUsingEncoding:NSUTF8StringEncoding];
    
    [request setHTTPBody:paramData];
    
    //創建鏈接
     NSURLConnection *connection = [NSURLConnection  connectionWithRequest:request delegate:self];//    協議要寫上
    //4.啓動鏈接
    [connection start];
    
   //代理協議的方法
   //已經收到響應
   - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
   {
    _receiveData = [NSMutableData data];
    }
   //開始接受數據
   - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    {
    //屢次執行
    [_receiveData appendData:data];//拼接數據
    }
   //結束接受數據
    - (void)connectionDidFinishLoading:(NSURLConnection*)connection
   {
    //解析
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:_receiveData options:NSJSONReadingAll    owFragments error:nil];
    NSLog(@"%@",dic);
   }
   //方式錯誤
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    
}
  
5. GET和POST的區別:

   1. GET請求的接口會包含參數部分,參數做爲網址的一部分,服務器地址與參數之間經過?來間隔,POST會將服務器地址
   
   與參數進行分開,請求接口中只有服務器地址,而參數會做爲請求的一部分,提交後臺服務器
   
   2. GET請求參數會出如今接口中,不安全,而POST請求相對安全
   
   3.雖然GET和POST請求均可以請求和提交數據,可是通常的GET多用於從後臺請求數據,POST多用於向後臺提交數據。
   
6. 同步和異步的區別:

   1. 同步鏈接:主線程去請求數據,當數據請求完畢以前,其餘線程一概不響應,會形成程序假死現象。
   
   2. 異步鏈接:會單獨開一個線程去處理網絡請求中的數據,主線程依然處於交互狀態,程序運行流暢。
相關文章
相關標籤/搜索