• iOS- 网络访问两种常用方式【GET & POST】实现的几个主要步骤


    1.前言                              

    上次,在博客里谈谈了【GET & POST】的区别,这次准备主要是分享一下自己对【GET & POST】的理解和实现的主要步骤。

    在这就不多废话了,直接进主题,有什么不足的欢迎大家指出来。

    网络访问两种常用方式【GET & POST】的区别

    2.GET                             

    2.1. 定义URL,确定要访问的地址                           

    NSURL *url = [NSURL URLWithString:urlString];

    2.2定义URLRequest,确定网络访问请求,在GET方法中直接用URL即可        

    这里的参数,主要是为了防止卡死的情况,在最多读取数据时间2秒内给用户答复,提高用户体验!

    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:2.0f];

    NSURLResponse *response = nil;

    NSError *error = nil;

    2.2.1同步请求(应用场景:网银账户的登录)                                            

    // 一定要获取到某个网络返回数据后,才能进行下一步操作的场景!

    // 发送同步请求,respone&error要带地址的原因就是为了方法执行后,能够方便使用response&error

    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

    2.2.2异步方法                                                          

    [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

        // 块代码的内容会在网络访问后执行

        // 块代码是预先定义好的代码片段,在满足某个条件时执行的。

    }];

    3.POST                            

    3.1. 定义URL,确定要访问的地址                           

    NSURL *url = [NSURL URLWithString:urlString];

    3.2. 定义请求,生成数据体添加到请求                         

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

    1) 指定网络请求的方法

    request.HTTPMethod = @"POST";

    2) 生成数据体

    1 // * 先生成字符串
    2 
    3 NSString *bodyStr = [NSString stringWithFormat:@"username=%@&password=%@", userName, password];
    4 
    5 // * 将字符串转换成NSData
    6 
    7 request.HTTPBody = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];

    // 提示:POST请求多用于用户登录,或者上传文件,在实际开发中,“POST请求的参数及地址”需要与公司的后端程序员沟通。

    // POST同样具备同步和异步方法,在这里就不做分别实现了。

                                                              清澈Saup

  • 相关阅读:
    JSON 序列化类 南京酷得软件
    哈哈哈哈哈哈 找回记忆
    Presto
    (转)在Total Commander下使用SVN
    在ubuntu12.04,64位中安装lnmp一键包mysql的问题
    阿里云服务器上搭建php环境+redis
    在ubuntu12.04,64位中安装nginx+php+redis+mysql
    Redis篇:单线程I/O模型
    工具篇:apachehttpClient 和 jdk11HttpClient的使用
    技能篇:关于缓存数据的一致性探讨
  • 原文地址:https://www.cnblogs.com/qingche/p/3509947.html
Copyright © 2020-2023  润新知