iOS中的 Get & Post

来源:互联网 发布:淘宝宝贝页面模板 编辑:程序博客网 时间:2024/06/18 12:25

–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:624204727@qq.com

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) {

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

    } else {

    1// 在网络登录时,千万不要告诉用户什么错了!
    2message = @"用户名或者密码错误!";

    }

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

    [alert show]; 
    }



0 0