iOS开发网络篇—NSURLConnection基本使用(二)

本文介绍了NSURLConnection的基础概念,包括NSURL和NSURLRequest等类的作用及属性。重点讲解了使用NSURLConnection发送GET请求的不同方法,以及如何利用代理方法处理服务器响应。此外,还详细说明了如何通过NSMutableURLRequest发送POST请求。

1、常用的类

NSURL:请求地址

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

一个NSURL对象

请求方法、请求头、请求体

请求超时

…...

NSMutableURLRequest:NSURLRequest的子类

NSURLConnection

负责发送请求,建立客户端和服务器的连接。

发送数据给服务器,并收集来自服务器的响应数据。

2、NSURLConnection发送请求,常见的发送请求(默认都是GET请求)方式(都是类方法哦)有以下几种:

 2-1.第一种GET请求方法:直接通过同步或异步请求(一般都是使用不会堵塞的异步请求)

  • 同步请求

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

  • 异步请求

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

 2-2.第二种GET请求方法:使用NSURLConnectDataDelegate协议中的代理方法 (默认都是GET请求)

 <代理方法内部其实是异步请求,所以不会堵塞>

  • 开始接收服务器的响应时调用

- (void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response;

  • 接收到服务器返回的数据时调用(服务器返回的数据比较大时会调用多次)

- (void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data;

  • 服务器返回的数据完全接收完毕后调用

- (void)connectionDidFinishLoading:(NSURLConnection*)connection;

  • 请求出错时调用(比如请求超时)

- (void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error;

总结:

连接(connection)开始接收响应,那么最后面的参数有response(响应)。

连接(connection)接收到数据,那么最后面的参数有data(数据)。

连接(connection)接收完毕(DidFinishLoading),那么最后面没有参数了。

连接(connection)请求错误,那么最后面的参数就是error(错误)。

其中第三种方法需要调用start方法,前两种方法不需要。

3、NSConnection发送POST请求,使用NSMutableURLRequest

NSMutableURLRequest是URLRequest的子类,常用的方法都是设置“set”(只要敲出set就能导出相关方法)相关的方法:

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

-(void)setTimeoutInterval:(NSTimeInterval)seconds;

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

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

  • 设置请求体

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

  • 设置请求头

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

因为NSMutableURLRequest是Mutable的,所以可以重新设置请求方法,可以将之前默认GET方法设置为POST请求。

如果服务器端需要接收客户端信息,那么可能就需要下面的setValue forHTTPHeaderField方法。

额外积累:

interval 英 'ɪntəv(ə)l 美 'ɪntɚvl n. 间隔;间距;幕间休息


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值