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.遵守代理协议<NSURLConnectionDataDelegate>
    • 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发送请求
    • 解析数据
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353

推荐阅读更多精彩内容