iOS网络发送网络请求的步骤:
1、实例化URL(网络资源)
2、根据URL建立URLRequest(网络请求)
- 默认为GET请求
- 对于POST请求,需要创建请求的数据体
3、利用URLConnection发送网络请求(建立连接)
4、获得结果
常用类:
NSURL:请求地址
NSURLRequest:一个NSURLRequest对象就代表一个请求,它包含的信息有
一个NSURL对象、请求方法、请求头、请求体、请求超时
… …
NSMutableURLRequest:NSURLRequest的子类
NSURLConnection:负责发送请求,建立客户端和服务器的连接,发送NSURLRequest的数据给服务器,并收集来自服务器的响应数据
NSURLConnection提供了两个静态方法可以直接以同步或异步的方式向服务器发送网络请求:
同步请求:sendSynchronousRequest:returningResponse:error:
异步请求:sendAsynchronousRequest:queue: completionHandler:
NSURLConnection的使用步骤:
使用NSURLConnection发送请求的步骤很简单
1、创建一个NSURL对象,设置请求路径
2、传入NSURL创建一个NSURLRequest对象,设置请求头和请求体
3、使用NSURLConnection发送NSURLRequest
网络传输之二进制数据流:在网络请求过程中,接收数据的过程实际上是通过NSURLConnectionDataDelegate来实现的,常用代理方法包括:
//服务器开始返回数据,准备工作
(void)connection:didReceiveResponse:
//收到服务器返回的数据,本方法会被调用多次
- (void)connection:didReceiveData:
//数据接收完毕,做数据的最后处理
(void)connectionDidFinishLoading:
//网络连接错误
- (void)connection:didFailWithError:
创建GET和POST请求:
//创建GET请求
NSString *urlStr = [@"http://192.168.1.102:8080/Server/login?username=123&pwd=123" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:urlStr];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//创建POST请求
NSString *urlStr = @"http://192.168.1.102:8080/Server/login";
NSURL *url = [NSURL URLWithString:urlStr];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
// 请求体
NSString *bodyStr = @"username=123&pwd=123";
request.HTTPBody = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
使用代理实现关联性较强的业务逻辑时:
1、代理方法较多,比较分散
2、要处理一个请求,需要在很多地方编写代码
3、不利于逻辑实现、代码编写、调试、维护以及扩展
4、尤其当存在多个请求时会变得非常麻烦