iOS学习笔记-146.网络06——NSURLConnection03_使用
来源:互联网 发布:validateform js 编辑:程序博客网 时间:2024/06/05 20:53
- 网络06NSURLConnection03_使用
- 一请求的登陆接口分析
- 二GET方法同步请求使用NSURLRequest
- 1 代码示例
- 2 响应结果
- 三GET方法同步请求使用NSMutableURLRequest
- 1 代码示例
- 2 响应结果
- 四GET方法异步请求使用NSMutableURLRequest
- 1 代码示例
- 2 响应结果
- 五POST方法同步请求使用NSMutableURLRequest
- 1 代码示例
- 2 响应结果
- 六POST方法异步请求使用NSMutableURLRequest
- 1 代码示例
- 2 响应结果
- 七POST方法请求使用NSMutableURLRequest响应通过代理获取
- 1 代码示例
- 2 响应结果
- 3 打印结果
- 八全部代码
网络06——NSURLConnection03_使用
一、请求的登陆接口分析
如果你没有搭建自己登陆接口的话,可以按照
iOS学习笔记-141.网络01——使用Tomcat和JavaWeb来搭建自己的网络接口
搭建
请求的方法、参数、地址等可以查看我们的
iOS学习笔记-143.网络03——自己搭建的后台登陆接口文档
通过我们的接口文档,我们知道
请求的地址是 http://127.0.0.1:8080/qwmapi/login
请求头需要传递的信息是
请求参数是
二、GET方法同步请求(使用NSURLRequest)
我们使用的 NSURLRequest,无法设置请求头,所以我们的这个方法应该是登陆不成功的
2.1 代码示例
//登陆请求地址#define LOGINURL @"http://127.0.0.1:8080/qwmapi/login"/*get同步方法测试*/-(void)getSyncTest1{ //1.设置请求路径 NSURL *url = [NSURL URLWithString:LOGINURL]; //2.创建请求对象 NSURLRequest *request = [NSURLRequest requestWithURL:url]; //3.使用NSURLSession sendsync方法发送网络请求 /* 第一个参数:请求对象 第二个参数:响应头信息,当该方法执行完毕之后,该参数被赋值 第三个参数:错误信息,如果请求失败,则error有值 */ //该方法是阻塞式的,会卡住线程 NSHTTPURLResponse *response = nil; NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; //4.接收到服务器的响应后,解析响应体 NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"%@",str);}
2.2 响应结果
{ "code": 700, "msg": "客户端类型不能为空"}
三、GET方法同步请求(使用NSMutableURLRequest)
3.1 代码示例
//登陆请求地址#define LOGINURL @"http://127.0.0.1:8080/qwmapi/login"/*get同步方法测试*/-(void)getSyncTest2{ //1.设置请求路径 NSString *path = [NSString stringWithFormat:@"%@?userName=qiwenming&password=%@",LOGINURL,[@"123456" MD5_32BitLower]]; NSURL *url = [NSURL URLWithString:path]; //2.创建请求对象 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //3.添加请求头 [request setValue:@"2" forHTTPHeaderField:@"QWM-CLIENT-TYPE"]; //4.使用NSURLSession sendsync方法发送网络请求 /* 第一个参数:请求对象 第二个参数:响应头信息,当该方法执行完毕之后,该参数被赋值 第三个参数:错误信息,如果请求失败,则error有值 */ //该方法是阻塞式的,会卡住线程 NSHTTPURLResponse *response = nil; NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; //5.接收到服务器的响应后,解析响应体 NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"%@",str);}
3.2 响应结果
{ "code": 200, "msg": "登录成功", "t": { "userName": "qiwenming", "clientType": "2" }}
四、GET方法异步请求(使用NSMutableURLRequest)
4.1 代码示例
/*get异步请求*/-(void)getAsyncTest{ //1.设置请求路径 NSString *path = [NSString stringWithFormat:@"%@?userName=qiwenming&password=%@",LOGINURL,[@"123456" MD5_32BitLower]]; NSURL *url = [NSURL URLWithString:path]; //2.创建请求 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //3.设置请求头 [request setValue:@"2" forHTTPHeaderField:@"QWM-CLIENT-TYPE"]; //4.使用NSURLSession sendsync方法发送网络请求 /* 第一个参数:请求对象 第二个参数:队列 决定代码块completionHandler的调用线程 第三个参数:completionHandler 当请求完成(成功|失败)的时候回调 response:响应头 data:响应体 connectionError:错误信息 */ [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { //5.接收到服务器的响应后,解析响应体 NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]); }];}
4.2 响应结果
{ "code": 200, "msg": "登录成功", "t": { "userName": "qiwenming", "clientType": "2" }}
五、POST方法同步请求(使用NSMutableURLRequest)
5.1 代码示例
/*post同步方法测试*/-(void)postSyncTest{ //1.设置URL NSURL *url = [NSURL URLWithString:LOGINURL]; //2.创建请求 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //设置请求方法,必须大写 [request setHTTPMethod:@"POST"]; //设置请求头 [request setValue:@"2" forHTTPHeaderField:@"QWM-CLIENT-TYPE"]; //设置请求参数 NSString *params = [NSString stringWithFormat:@"userName=qiwenming&password=%@",[@"123456" MD5_32BitLower]]; request.HTTPBody = [params dataUsingEncoding:NSUTF8StringEncoding]; //3.通过NSURLConnection发从请求 NSHTTPURLResponse *response = nil; NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; //4.返回的数据 NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);}
5.2 响应结果
{ "code": 200, "msg": "登录成功", "t": { "userName": "qiwenming", "clientType": "2" }}
六、POST方法异步请求(使用NSMutableURLRequest)
6.1 代码示例
/*post异步方法测试*/-(void)postAsyncTest{ //1.设置请求地址 NSURL *url = [NSURL URLWithString:LOGINURL]; //2.创建请求对象 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //设置请求方法 request.HTTPMethod = @"POST"; //设置请求头 [request setValue:@"2" forHTTPHeaderField:@"QWM-CLIENT-TYPE"]; //设置请求体 NSString *params = [NSString stringWithFormat:@"userName=qiwenming&password=%@",[@"123456" MD5_32BitLower]]; request.HTTPBody = [params dataUsingEncoding:NSUTF8StringEncoding]; //3.发送网络请请求 [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { //4.处理响应 NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]); }];}
6.2 响应结果
{ "code": 200, "msg": "登录成功", "t": { "userName": "qiwenming", "clientType": "2" }}
七、POST方法请求(使用NSMutableURLRequest),响应通过代理获取
7.1 代码示例
/*NSURLConnection 设置代理的请求方式*/-(void)delegateRequest{ //1.设置请求地址 NSURL *url = [NSURL URLWithString:LOGINURL]; //2.创建创建对象 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //设置超时时间 request.timeoutInterval = 10; //设置请求方法 request.HTTPMethod = @"POST"; //设置请求头 [request setValue:@"2" forHTTPHeaderField:@"QWM-CLIENT-TYPE"]; //设置请求体 NSString *params = [NSString stringWithFormat:@"userName=qiwenming&password=%@",[@"123456" MD5_32BitLower]]; request.HTTPBody = [params dataUsingEncoding:NSUTF8StringEncoding]; //3.发送网络连接 //创建的时候,发送请求需要检查startImmediately的值 //(startImmediately == YES 会发送 | startImmediately == NO 则需要调用start方法) //[[NSURLConnection alloc]initWithRequest:request delegate:self]; NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:NO]; //4.开始连接 [connection start]; //取消连接 //[connection cancel];}//===============================代理方法=================================/*1.开始接收到服务器的响应时调用*/-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ NSLog(@"--接收到服务器响应啦--");}/*2.接收到服务器返回的数据时调用(服务器返回的数据比较大时会调用多次)*/-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{ NSLog(@"--接收到数据啦---"); [self.resultData appendData:data];}/*3.服务器返回的数据完全接收完毕后调用*/-(void)connectionDidFinishLoading:(NSURLConnection *)connection{ NSLog(@"---数据接收完成啦--"); NSLog(@"%@",[[NSString alloc]initWithData:self.resultData encoding:NSUTF8StringEncoding]);}/*4.请求出错时调用(比如请求超时)*/-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{ NSLog(@"---出错啦--");}
7.2 响应结果
{ "code": 200, "msg": "登录成功", "t": { "userName": "qiwenming", "clientType": "2" }}
7.3 打印结果
[23650:122048] --接收到服务器响应啦--[23650:122048] --接收到数据啦---[23650:122048] ---数据接收完成啦--[23650:122048] {"code":700,"msg":"客户端类型不能为空"}
八、全部代码
//// ViewController.m// 001_NSURLConnection_get_post//// Created by 杞文明 on 17/9/11.// Copyright © 2017年 杞文明. All rights reserved.//#import "ViewController.h"#import "NSString+MD5.h"//登陆请求地址#define LOGINURL @"http://127.0.0.1:8080/qwmapi/login"@interface ViewController ()<NSURLConnectionDataDelegate>@property (nonatomic, strong) NSMutableData *resultData;@end@implementation ViewController-(NSMutableData*)resultData{ if (!_resultData) { _resultData = [NSMutableData data]; } return _resultData;}-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{// [self getSyncTest1];// [self getSyncTest2];// [self getAsyncTest];// [self postSyncTest]; [self delegateRequest];}/*get同步方法测试*/-(void)getSyncTest1{ //1.设置请求路径 NSString *path = [NSString stringWithFormat:@"%@?userName=qiwenming&password=%@",LOGINURL,[@"123456" MD5_32BitLower]]; NSURL *url = [NSURL URLWithString:path]; //2.创建请求对象 NSURLRequest *request = [NSURLRequest requestWithURL:url]; //3.使用NSURLSession sendsync方法发送网络请求 /* 第一个参数:请求对象 第二个参数:响应头信息,当该方法执行完毕之后,该参数被赋值 第三个参数:错误信息,如果请求失败,则error有值 */ //该方法是阻塞式的,会卡住线程 NSHTTPURLResponse *response = nil; NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; //4.接收到服务器的响应后,解析响应体 NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"%@",str);}/*get同步方法测试*/-(void)getSyncTest2{ //1.设置请求路径 NSString *path = [NSString stringWithFormat:@"%@?userName=qiwenming&password=%@",LOGINURL,[@"123456" MD5_32BitLower]]; NSURL *url = [NSURL URLWithString:path]; //2.创建请求对象 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //3.添加请求头 [request setValue:@"2" forHTTPHeaderField:@"QWM-CLIENT-TYPE"]; //4.使用NSURLSession sendsync方法发送网络请求 /* 第一个参数:请求对象 第二个参数:响应头信息,当该方法执行完毕之后,该参数被赋值 第三个参数:错误信息,如果请求失败,则error有值 */ //该方法是阻塞式的,会卡住线程 NSHTTPURLResponse *response = nil; NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; //5.接收到服务器的响应后,解析响应体 NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"%@",str);}/*get异步请求*/-(void)getAsyncTest{ //1.设置请求路径 NSString *path = [NSString stringWithFormat:@"%@?userName=qiwenming&password=%@",LOGINURL,[@"123456" MD5_32BitLower]]; NSURL *url = [NSURL URLWithString:path]; //2.创建请求 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //3.设置请求头 [request setValue:@"2" forHTTPHeaderField:@"QWM-CLIENT-TYPE"]; //4.使用NSURLSession sendsync方法发送网络请求 /* 第一个参数:请求对象 第二个参数:队列 决定代码块completionHandler的调用线程 第三个参数:completionHandler 当请求完成(成功|失败)的时候回调 response:响应头 data:响应体 connectionError:错误信息 */ [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]); }]; //5.接收到服务器的响应后,解析响应体}/*post同步方法测试*/-(void)postSyncTest{ //1.设置URL NSURL *url = [NSURL URLWithString:LOGINURL]; //2.创建请求 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //设置请求方法,必须大写 [request setHTTPMethod:@"POST"]; //设置请求头 [request setValue:@"2" forHTTPHeaderField:@"QWM-CLIENT-TYPE"]; //设置请求参数 NSString *params = [NSString stringWithFormat:@"userName=qiwenming&password=%@",[@"123456" MD5_32BitLower]]; request.HTTPBody = [params dataUsingEncoding:NSUTF8StringEncoding]; //3.通过NSURLConnection发从请求 NSHTTPURLResponse *response = nil; NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; //4.返回的数据 NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);}/*post异步方法测试*/-(void)postAsyncTest{ //1.设置请求地址 NSURL *url = [NSURL URLWithString:LOGINURL]; //2.创建请求对象 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //设置请求方法 request.HTTPMethod = @"POST"; //设置请求头 [request setValue:@"2" forHTTPHeaderField:@"QWM-CLIENT-TYPE"]; //设置请求体 NSString *params = [NSString stringWithFormat:@"userName=qiwenming&password=%@",[@"123456" MD5_32BitLower]]; request.HTTPBody = [params dataUsingEncoding:NSUTF8StringEncoding]; //3.发送网络请请求 [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { //4.处理响应 NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]); }];}/*NSURLConnection 设置代理的请求方式*/-(void)delegateRequest{ //1.设置请求地址 NSURL *url = [NSURL URLWithString:LOGINURL]; //2.创建创建对象 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //设置超时时间 request.timeoutInterval = 10; //设置请求方法 request.HTTPMethod = @"POST"; //设置请求头 [request setValue:@"2" forHTTPHeaderField:@"QWM-CLIENT-TYPE"]; //设置请求体 NSString *params = [NSString stringWithFormat:@"userName=qiwenming&password=%@",[@"123456" MD5_32BitLower]]; request.HTTPBody = [params dataUsingEncoding:NSUTF8StringEncoding]; //3.发送网络连接 //创建的时候,发送请求需要检查startImmediately的值 //(startImmediately == YES 会发送 | startImmediately == NO 则需要调用start方法) //[[NSURLConnection alloc]initWithRequest:request delegate:self]; NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:NO]; //4.开始连接 [connection start]; //取消连接 //[connection cancel];}//===============================代理方法=================================/*1.开始接收到服务器的响应时调用*/-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ NSLog(@"--接收到服务器响应啦--");}/*2.接收到服务器返回的数据时调用(服务器返回的数据比较大时会调用多次)*/-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{ NSLog(@"--接收到数据啦---"); [self.resultData appendData:data];}/*3.服务器返回的数据完全接收完毕后调用*/-(void)connectionDidFinishLoading:(NSURLConnection *)connection{ NSLog(@"---数据接收完成啦--"); NSLog(@"%@",[[NSString alloc]initWithData:self.resultData encoding:NSUTF8StringEncoding]);}/*4.请求出错时调用(比如请求超时)*/-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{ NSLog(@"---出错啦--");}@end
阅读全文
0 0
- iOS学习笔记-146.网络06——NSURLConnection03_使用
- iOS学习笔记07—网络编程
- iOS学习笔记-145.网络05——NSURLConnection02_使用相关
- iOS学习笔记-141.网络01——使用Tomcat和JavaWeb来搭建自己的网络接口
- IOS学习之网络笔记
- iOS网络开发学习笔记
- iOS学习笔记(八)——iOS网络通信http之NSURLConnection
- iOS学习笔记(八)——iOS网络通信http之NSURLConnection
- iOS学习笔记(八)——iOS网络通信http之NSURLConnection
- iOS学习笔记(八)——iOS网络通信http之NSURLConnection
- iOS学习笔记(八)——iOS网络通信http之NSURLConnection
- ios学习路线—iOS高级(网络)
- IOS学习笔记38——NSJSONSerialization使用
- IOS学习笔记38——NSJSONSerialization使用
- IOS开发学习笔记(四)——使用TableView
- IOS学习笔记38——NSJSONSerialization使用
- iOS学习笔记—— UIPickerView 控件的简单使用
- iOS学习笔记—— UISegmentedControl 控件的简单使用
- 推荐系统老司机的十条经验
- 如何杀死含有redis的所有进程
- 牛客网js学习总结
- 专业的直播APP音视频互动开发平台
- Linux学习笔记之权限管理
- iOS学习笔记-146.网络06——NSURLConnection03_使用
- Windbg调试win登录用户密码验证过程
- Nginx编译安装及相关功能实现
- 推荐系统之眼
- C#中的局部变量冲突
- 面试的几个总结
- Jetson-TX1 R24.2.1 & R28.1 (Jetapck3.1) 启动流程
- python os.system
- python-循环