拾遗系列(十)NSURLConnection(了解)

说明:
NSURLConnection:用法简单,最古老最经典最直接的一种方案【坑比较多】

NSURLSession:功能比NSURLConnection更加强大,苹果目前比较推荐使用这种技术【2013推出,iOS7开始出的技术】

HTTP通信过程 - 请求

HTTP协议规定:

1个完整的由客户端发给服务器的HTTP请求中包含以下内容

  • 请求头:包含了对客户端的环境描述、客户端请求信息等

    • GET /minion.png HTTP/1.1 // 包含了请求方法、请求资源路径、HTTP协议版本

    • Host: 192.168.0.1 // 客户端想访问的服务器主机地址

    • User-Agent: Mozilla/5.0 // 客户端的类型,客户端的软件环境
    • Accept: text/html, / // 客户端所能接收的数据类型
    • Accept-Language: zh-cn // 客户端的语言环境
      Accept-Encoding: gzip // 客户端支持的数据压缩格式
  • 请求体:客户端发给服务器的具体数据,比如文件数据(POST请求才会有)

HTTP通信过程 - 响应

客户端向服务器发送请求,服务器应当做出响应,即返回数据给客户端

HTTP协议规定:1个完整的HTTP响应中包含以下内容

  • 响应头:包含了对服务器的描述、对返回数据的描述

    • HTTP/1.1 200 OK // 包含了HTTP协议版本、状态码、状态英文名称
    • Server: Apache-Coyote/1.1 // 服务器的类型
    • Content-Type: image/jpeg // 返回数据的类型
    • Content-Length: 56811 // 返回数据的长度
    • Date: Mon, 23 Jun 2016 12:54:52 GMT // 响应的时间
  • 响应体:服务器返回给客户端的具体数据,比如文件数据

常用类

NSURL

请求地址

NSURLRequest:

一个NSURLRequest对象就代表一个请求,它包含的信息有一个NSURL对象

请求方法、请求头、请求体
请求超时
… …

NSMutableURLRequest

NSURLRequest的子类

NSURLConnection

  • 负责发送请求,建立客户端和服务器的连接
  • 发送数据给服务器,并收集来自服务器的响应数据

NSURLConnection使用步骤

  • 创建一个NSURL对象,设置请求路径
  • 传入NSURL创建一个NSURLRequest对象,设置请求头和请求体
  • 使用NSURLConnection发送请求

NSURLConnection发送请求

同步请求

+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error;

异步请求:
block回调

+ (void)sendAsynchronousRequest:(NSURLRequest*) request                          queue:(NSOperationQueue*) queue                                                  completionHandler:(void (^)(NSURLResponse* response, NSData* data, NSError* connectionError)) handler;

NSMutableURLRequest

设置请求超时等待时间(超过这个时间就算超时,请求失败)

- (void)setTimeoutInterval:(NSTimeInterval)seconds;

设置请求方法(比如GET和POST)

- (void)setHTTPMethod:(NSString *)method;

设置请求体

- (void)setHTTPBody:(NSData *)data;

设置请求头

- (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field;

示例

创建GET请求
NSString *urlStr = [@"xxx" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:urlStr];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
创建POST请求
NSString *urlStr = @"xxx";
NSURL *url = [NSURL URLWithString:urlStr];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
// 请求体
NSString *bodyStr = @"username=user&pwd=name";
request.HTTPBody = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];

JSON解析

NSJSONSerialization

  • JSON数据 -> OC对象
+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;
  • OC对象 -> JSON数据
+ (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值