首页 > 代码库 > 网络请求步骤
网络请求步骤
网络请求三步骤
1> URL 确定资源
NSString *urlStr = @"";
NSURL *url = [NSURL URLWithString:urlStr];
(1) GET URL 中包含参数
(2) POST URL 中没有参数
2> 建立请求 URLRequest
(1) GET 不需要对请求做特殊处理
NSURLRequest
(2) POST 需要在请求中,指定 HTTP 方法和 HTTP 数据体
NSMutableURLRequest
HTTPMethod = @"POST"
HTTPBody = 包含登录信息的二进制数据
3> 发送请求
*** 在实际开发中, 所有的网络请求都是异步的
NSURLConnection sendAsynchronousRequest
在请求的异步方法中, 对接收到的数据进行处理
*************************代码******************************
1 - (IBAction)login2 {3 [self postLogonWithUserName:self.userNameText.text password:self.pwdText.text];4 }
1 #pragma mark - GET 登录 2 - (void)getLogonWithUserName:(NSString *)userName password:(NSString *)password 3 { 4 // 1. 准备资源 url 5 NSString *urlStr = [NSString stringWithFormat:@"http://127.0.0.1/login.php?username=%@&password=%@", userName, password]; 6 7 NSURL *url = [NSURL URLWithString:urlStr]; 8 9 // 2. 创建网络请求 URLRequest10 // URLRequest 默认方法就是 GET11 NSURLRequest *request = [NSURLRequest requestWithURL:url];12 13 // 3. 发送网络请求 URLConnection14 // *** 所有的网络请求,都使用异步方法15 [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {16 17 // 1> 将返回的二进制数据,转换成字符串18 // (1)将二进制数据转换成字符串,没有直接的类方法,需要 alloc initWithData19 // (2)提示:在开发网络时,如果需要跟踪网络返回的具体内容,经常会先将 data 转换成字符串输出20 // 转换成字符串的方式,在调试中经常使用21 NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];22 NSLog(@"%@", result);23 24 // 2> JSON ,格式是和NSDictionary的快速包装格式非常像25 // 将 JSON 转换成字典26 NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];27 NSLog(@"%@", dict);28 }];29 }
1 #pragma mark - POST 登录 2 - (void)postLogonWithUserName:(NSString *)userName password:(NSString *)password 3 { 4 // 1. url 5 NSString *urlStr = @"http://127.0.0.1/login.php"; 6 NSURL *url = [NSURL URLWithString:urlStr]; 7 8 // 2. requeset, POST 方法需要建立一个可变的请求 9 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];10 // 2.1 POST方法11 request.HTTPMethod = @"POST";12 // 2.2 数据体13 NSString *bodyStr = [NSString stringWithFormat:@"username=%@&password=%@", userName, password];14 // 将字符串转换成二进制数据15 request.HTTPBody = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];16 17 // 3. 发送请求18 [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {19 20 // 1> 将返回的二进制数据,转换成字符串21 // (1)将二进制数据转换成字符串,没有直接的类方法,需要 alloc initWithData22 // (2)提示:在开发网络时,如果需要跟踪网络返回的具体内容,经常会先将 data 转换成字符串输出23 // 转换成字符串的方式,在调试中经常使用24 NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];25 NSLog(@"%@", result);26 27 // 2> JSON ,格式是和NSDictionary的快速包装格式非常像28 // 将 JSON 转换成字典29 NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];30 NSLog(@"POST 登录 === >%@", dict);31 }];32 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。