你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS中的 Get & Post

iOS中的 Get & Post

編輯:IOS開發綜合

–GET的語義是獲取指定URL上的資源 –將數據按照variable=value的形式,添加到action所指向的URL後面,並且兩者使用“?”連接,各個變量之間使用“&”連接 –不安全,因為在傳輸過程中,數據被放在請求的URL中 –傳輸的數據量小,這主要是因為受URL長度限制

1> Get請求直接從服務器拿數據

性能好

效率高

在地址欄會顯示所有的參數,從直觀上安全性不高

由於Get不提交數據給服務器,因此實際的安全性高

實際應用:數據查詢

–POST的語意是對指定資源“追加/添加”數據 –將數據放在數據體中,按照變量和值相對應的方式,傳遞到action所指向URL –所有數據對用戶來說不可見 –可以傳輸大量數據,上傳文件只能使用Post

2> Post請求,需要先弄一個數據體,將數據體提交給服務器,才能獲取到服務器的響應

性能不好

效率低

不會在地址欄顯示參數,直觀上安全性高

由於Post請求會提交數據給服務器,有可能會存在安全漏洞,實際的安全性不高

實際應用:用戶登錄、上傳文件等需要與服務器進行數據交互的操作,才需要使用到Post操作


?GET ?POST 數據交互圖如下: \ 以上參考:http://www.cnblogs.com/qingche/p/3495944.html 以下參考:http://my.oschina.net/panyong/blog/196972

下面是我post和get方法的關鍵代碼
主要是一個用戶名和密碼的登錄界面
界面的代碼我就省略了,我只提供關鍵代碼,如果有什麼疑問,可以聯系本人,共同探討:email:[email protected]

1 #pragma mark Get方法登錄
    • (IBAction)getLogin
      {
      NSString *userName = userName.text;
      NSString *password = password.text;

      // 1. 網絡地址URL
      NSString *urlString = [NSString stringWithFormat:@“http://192.168.3.251/~apple/itcast/login.php?username=%@&password=%@“, userName, password];
      urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

      NSURL *url = [NSURL URLWithString:urlString];

      // 2. 請求
      NSURLRequest *request = [NSURLRequest requestWithURL:url];

      // 3. 連接
      NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];

      // 4. 啟動連接
      [connection start];

      // 5. 實例化接收數據
      _serverData = [NSMutableData data];
      }


    • pragma mark POST登錄

      • (IBAction)postLogin
        {
        NSString *userName = userName.text;
        NSString *password = password.text;

        // 1. 網絡地址URL
        NSString *urlString = [NSString stringWithFormat:@“http://192.168.3.251/~apple/itcast/login.php”];

        NSURL *url = [NSURL URLWithString:urlString];

        // 2. 請求,生成數據體添加到請求
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

        // 1) 指定網絡請求的方法
        // 默認是GET,POST請求通常用在用戶登錄,上傳文件
        request.HTTPMethod = @“POST”;

        // 2) 生成數據體
        NSString *bodyStr = [NSString stringWithFormat:@“username=%@&password=%@“, userName, password];
        // 轉換成NSData
        request.HTTPBody = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];

        // 3. 連接
        NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];

        // 4. 啟動連接
        [connection start];

        // 5. 實例化接收數據
        _serverData = [NSMutableData data];
        }

        pragma mark - 網絡請求代理方法

        pragma mark 開始接收數據,拼接數據

        • (void)connection:(NSURLConnection )connection didReceiveData:(NSData )data
          {
          [_serverData appendData:data];
          }

          pragma mark 數據接收完成處理

          • (void)connectionDidFinishLoading:(NSURLConnection )connection
            {
            // 轉換成字符串
            NSString result = [[NSString alloc] initWithData:_serverData encoding:NSUTF8StringEncoding];

            NSLog(@“%@“, result);
            [self showMessageWithResult:result];

            // 釋放數據
            _serverData = nil;
            }

            pragma mark 錯誤處理

            • (void)connection:(NSURLConnection )connection didFailWithError:(NSError )error
              {
              NSLog(@“%@“, error.localizedDescription);
              }

              pragma mark - 私有方法

              pragma mark 處理服務器返回數據

              • (void)showMessageWithResult:(NSString *)result
                {
                // 判斷“用戶名”所在位置
                NSRange range = [result rangeOfString:@“用戶名”];
                NSLog(@“%@“, NSStringFromRange(range));

                // range.location > 0 說明用戶登錄正確
                NSString *message = nil;

                if (range.location > 0) {

                1 NSString *userName = [result substringFromIndex:range.location + range.length]; 2 NSLog(@"%@", userName); 3 4 message = [NSString stringWithFormat:@"歡迎歸來:%@", userName];

                } else {

                1 // 在網絡登錄時,千萬不要告訴用戶什麼錯了! 2 message = @"用戶名或者密碼錯誤!";

                }

                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@“提示” message:message delegate:nil cancelButtonTitle:@“OK” otherButtonTitles:nil, nil];

                [alert show];
                }



  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved