NSURLConnection

NSURLConnection

  • 常用类
    • NSURL:请求地址
    • NSURLRequest:一个NSURLRequest对象就代表一个请求,包含的信息有
      • 一个NSURL对象
      • 请求方法(默认是GET)、请求头、请求体
      • 请求超时
      • ...
    • NSMutableURLRequest:NSURLRequest的子类 (比如使用POST请求)
    • NSURLConnection
      • 负责发送请求,建立客户端和服务器的连接
      • 发送数据给服务器,收集来自服务器的数据
      • 使用步骤
        • 1.创建一个NSURL对象,设置请求路径
        • 2.传入NSURL创建一个NSURLRequest对象,设置请求头和请求体
        • 3.使用NSURLConnection发送请求
  • GET请求
    • 01.确定请求路径NSURL
      • URLWithString:
    • 02.创建请求对象NSURLRequest
      • 该请求对象内部默认会提供请求头和(请求体) |请求方法默认是GET
      • requestWithURL:
      • alloc initWithURL:
    • 03.使用NSRULConnection发送GET请求
      • 返回值就是响应体信息
      • 同步请求,开发中用的不多,网速比较慢的时候会卡住主线程sendSynchronousRequest:...
        • 参数一:请求对象
        • 参数二:响应头信息(传地址)
          • 初始化一个响应头信息
        • 参数三:错误信息(传地址)
          • 初始化一个错误信息
      • 异步请求不会卡住主线程sendAsynchronousRequest:...
        • 参数一:请求对象
        • 参数二:队列,决定block块在哪个线程中调用
        • 参数三:completionHandler完成(成功|失败)之后的回调,response:响应头信息,包含状态码、响应时间、请求路径等信息;data:响应体信息;connectionError:错误信息
        • 怎么拿到状态码?
          • NSHTTPURLResponse是真实类型和NSURLResponse是继承关系
          • 强转NSHTTPURLResponse * res = (NSHTTPURLResponse*)response
          • res.statusCode
          • res.allHeaderFields所有响应头信息
    • 04.解析服务器返回的数据
      • 看上去好像是字典,本质上字符串
      • 把二进制数据转为字符串
        • allocinitWithData:encoding:UTF8
    • 05.修改配置文件:ATS
  • 通过代理发送异步请求
    • 01.确定请求路径NSURL
      • URLWithString:
    • 02.创建请求对象NSURLRequest
      • 该请求对象内部默认会提供请求头和(请求体) |请求方法默认是GET
      • requestWithURL:
      • alloc initWithURL:
    • 03.设置代理
      • 方法一:NSURLConnection alloc initWithRequest:delegate:
      • 方法二:NSURLConnection allocinitWithRequest:delegate:startImmdiately:YES
        • 如果设置startImmdiately为NO,怎么发送网络请求?调用start方法发送网络请求
      • 怎么拿到服务器返回数据?
      • 怎么取消请求? cancel
    • 04.遵守代理协议
    • 05.实现代理方法
      • 接收到服务器响应的时候调用connection:didReceiveResponse:
        • 初始化可变的数据
      • 接收到服务器返回的数据的时候调用connection:didReceiveData:
        • 该方法可能会调用多次
        • 拼接服务器返回的数据
      • 失败的时候会调用connection:didFailWithError:
      • 请求完成的时候调用该方法connectionDidFinishLoading:
        • 解析数据
    • 代理使用场景:下载大文件的时候
    • 设置代理好处:监听文件下载进度
  • POST

    • 发送一个异步请求
    • 01.确定请求路径URLWithString:
    • 02.创建可变请求对象NSMutableURLRequest
      • requestWithURL:
      • 默认请求头|请求方法(GET)
      • 2.1修改请求方法为POST.HTTPMethod = @"POST"
      • 2.2设置参数,设置请求体
        • username |pwd |type
        • .HTTPBody = 把字符串转成二进制数据:[@"username = 1 &pwd = 1 & type = JSON" dataUsingEncoding];
      • 2.3设置其他属性
        • 请求超时时间.timeoutInterval:如果在该时间段内没有完成请求那么就认为请求失败,开发中一般是15s或30s
        • 设置请求头信息setValue:forHTTPHeaderField:应用场景:如果公司想要收集用户的信息,可以通过客户端的环境来收集User-Agent
        • 设置请求头多条信息addValue:forHTTPHeaderField:
    • 03.发送异步请求
    • 04.解析服务器返回的数据
  • GET请求和POST请求的区别?

    • GET请求的步骤
      • 确定请求路径(包含参数)
      • 创建请求对象
      • 使用NSURLConnection发送请求
    • POST请求
      • 确定请求路径(不包含参数)
      • 创建可变的请求对象
      • 修改请求方法为POST
      • 设置请求体(设置参数)
      • 使用NSURLConnection发送请求
    • 请求路径的区别
      • GET:协议头://主机地址/接口名称?参数1&参数2&参数3
      • POST:协议头://主机地址/接口名称
  • 中文转码处理
    • 确定请求路径(包含参数)
      • username = 李 &pwd =li &type = JSON
      • 浏览器内部在发送网络请求的时候会做中文转码处理
      • [urlStr stringByAddingpERCENTeSCAPESusingEncoding:NSUTF8StringEncoding]
      • URLWithString:
    • 创建请求对象
    • 使用NSURLConnection发送请求
    • 解析数据

你可能感兴趣的:(NSURLConnection)