IOS网络篇:GET和POST的区别

/**

 

 GET POST 的区别

 

 HTTP请求方法

 

 1. GET 所有的参数都拼接在URL后面 (安全性比POST要差,

    所有GET登陆请求都会生成日志并且保存到手机里面!)

 

    GET使用场景为:查找数据

 

 2. POST 参数不拼接到URL后面,所有参数都存放在请求体中。

    POST使用场景为:更改数据

 

 3. GET POST 主要区别表现在数据的传递上

 

 A.GET在请求URL后面已"?"的形式跟上发送给服务器请求的参数,多个参数之间已"&"符号隔开,:

    http://www.test.com/login?username=123&pwd=123&type=json

 

 B.由于浏览器和服务器对URL的长度有限制,因此一条URL一般不能超过1KB

 

 C.POST发送给服务器的参数全部都放在请求体中。

 

 D.理论上,POST传递的数据量没有限制(具体取决于服务器性能)

 

 4.选择使用 GET POST 的建议

 

 A.如果要传递大量数据,如上传文件,只能POST请求

 

 B.GET的安全性比POST要差一些,如包含密码\其他敏感信息,建议使用POST

 

 C.如果仅仅是索取数据(数据查找),建议使用GET

 

 D 如果是增加、修改、删除、等操作,建议使用POST

 

 (一般取决于公司给你的开发文档按需求驱动选择)

 

 发送HTTP请求的方法

 

 1.HTTP/1.1协议中,定义了8中请求的方式

 

 具体介绍如下:

 

 OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。

 

 HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。

 

 GET:向特定的资源发出请求。

 

 POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。

 

 PUT:向指定资源位置上传其最新内容。

 

 DELETE:请求服务器删除Request-URI所标识的资源。

 

 TRACE:回显服务器收到的请求,主要用于测试或诊断。

 

 CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

 

 虽然HTTP的请求方式有8种,但是我们在实际应用中常用的也就是GETPOST,其他请求方式也都可以通过这两种方式间接的来实现。

 */

//参考代码

/**
 *  POST 请求
 */
- (IBAction)landingBoat:(id)sender {
    // 本地判断
    if (self.userView.text.length == 0)
    {
        [MBProgressHUD showError:@"用户为空"];
        return;
    }
    if (self.passWordView.text.length == 0)
    {
        [MBProgressHUD showError:@"密码为空"];
        return;
    }
    // 创建一个URL 请求路径
    NSURL* URL = [NSURL URLWithString:@"http://127.0.0.1:8080/Server/login"];
   // 创建一个请求体
    NSMutableURLRequest* urlRequest = [NSMutableURLRequest requestWithURL:URL];
    // 请求格式,默认为GET
    urlRequest.HTTPMethod = @"POST";
    // 设置请求参数
    NSString* patch = [NSString stringWithFormat:@"username=%@&pwd=%@",self.userView.text,self.passWordView.text];
    // string 转 Data
    urlRequest.HTTPBody = [patch dataUsingEncoding:NSUTF8StringEncoding];
    // 发送同步请求,主线程操作
    NSOperationQueue* queue = [NSOperationQueue mainQueue];
    [NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        //判断结果
        if (data==nil || connectionError!=nil)
        {
            [MBProgressHUD showSuccess:@"网络繁忙。"];
            return;
        }
        //解析Json
        NSDictionary* stay = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
        NSString* error = stay[@"error"];
        if (error)
        {
            [MBProgressHUD showError:error];
        }else
        {
            NSString* success = stay[@"success"];
            [MBProgressHUD showSuccess:success];
        }
        
    }];
}


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值