美文网首页
iOS HTTP简单说说

iOS HTTP简单说说

作者: 那已逝的时光 | 来源:发表于2018-11-20 12:00 被阅读12次

    AFNetworking是一个轻量级的iOS网络通信类库。它建立在NSURLConnection和NSOperation等类库的基础上,让很多网络通信功能的实现变得十分简单。它支持HTTP请求和基于REST的网络服务(包括GET、POST、 PUT、DELETE等)。支持ARC

    1.首先 所有的网络请求,均有manager发起

            AFHTTPRequestOperationManager *manager=[AFHTTPRequestOperationManager manager];        
            manager.requestSerializer = [AFJSONRequestSerializer serializer];
            manager.responseSerializer = [AFJSONResponseSerializer serializer];
    

    需要注意的是,默认提交请求的数据是二进制的,返回格式是JSON

    1. 如果提交数据是JSON的,需要将请求格式设置为AFJSONRequestSerializer
    2. 如果返回格式不是JSON的,
    1. 请求格式
    • AFHTTPRequestSerializer | 二进制格式
    • AFJSONRequestSerializer | JSON
    • AFPropertyListRequestSerializer | PList(是一种特殊的XML,解析起来相对容易)
      AF的 AFHTTPRequestSerializer 和 AFJSONRequestSerializer是传递有区分
      AFHTTPRequestSerializer的传递 在底层又对 参数和参数值进行了一次Url编码
      [mutableRequest setHTTPBody:[query dataUsingEncoding:self.stringEncoding]];
    

    AFJSONRequestSerializer的传递 则是在底层将 参数(一般情况下我们传递的是字典类型 也就是java中的map形式)转化为了NSData类型进行传递

       [mutableRequest setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters options:self.writingOptions error:error]];
    

    一般的网络请求分为2种也就是mimeType的2种类型

    1.application/x-www-form-urlencoded
    2.multipart/form-data(最初的 http 协议中,没有上传文件方面的功能。rfc1867为http协议添加了这个功能)也就是Multipart协议

    绝大部分 http server ,包括 tomcat ,已经支持此协议,可接受发送来的文件。各种网页程序,如 php, asp, jsp 中,对于上传文件已经做了很好的封装

    另附上平时接受和发送请求实例解说

    客户端发送:
    // 协议头 请求方式 请求地址 协议版本 \r\n
    GET http://taxcolor.dlc-sz.com/getWelfareList?pageNo=1&pageSize=2 HTTP/1.1
    // 请求头 headers
    Host: taxcolor.dlc-sz.com
    // 是否支持长连接
    Connection: Keep-Alive
    // 编解码方式
    Accept-Encoding: gzip
    // 网页的Cookie,可以用token取代
    Cookie: JSESSIONID=6E7237AB3B1DBA3BC8FD652264D64BA3
    // 用户表示
    User-Agent: okhttp/3.9.0

    服务端回复:
    // 协议头 协议版本 响应码 请求结果 \r\n
    HTTP/1.1 200 OK
    // 服务端用的框架
    Server: nginx/1.14.0
    // 回复时间
    Date: Mon, 13 Aug 2018 05:55:46 GMT
    // body文本类型
    Content-Type: application/json;charset=UTF-8
    // 告诉客户端支持keep-alive
    Connection: keep-alive
    X-Application-Context: application:8930
    // body长度
    Content-Length: 506

    // 想隔两个\r\n放body
    {"code":1,"msg":"操作成功!",。。。

    相关文章

      网友评论

          本文标题:iOS HTTP简单说说

          本文链接:https://www.haomeiwen.com/subject/lqbtqqtx.html