标签:style blog http color 使用 os io 数据
网络请求三步骤
NSString *urlStr = @"";
NSURL *url = [NSURL URLWithString:urlStr];
(1) GET URL 中包含参数
(2) POST URL 中没有参数
(1) GET 不需要对请求做特殊处理
NSURLRequest
(2) POST 需要在请求中,指定 HTTP 方法和 HTTP 数据体
NSMutableURLRequest
HTTPMethod = @"POST"
HTTPBody = 包含登录信息的二进制数据
*** 在实际开发中, 所有的网络请求都是异步的
NSURLConnection sendAsynchronousRequest
在请求的异步方法中, 对接收到的数据进行处理
*************************代码******************************
1 - (IBAction)login 2 { 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. 创建网络请求 URLRequest 10 // URLRequest 默认方法就是 GET 11 NSURLRequest *request = [NSURLRequest requestWithURL:url]; 12 13 // 3. 发送网络请求 URLConnection 14 // *** 所有的网络请求,都使用异步方法 15 [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { 16 17 // 1> 将返回的二进制数据,转换成字符串 18 // (1)将二进制数据转换成字符串,没有直接的类方法,需要 alloc initWithData 19 // (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 initWithData 22 // (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 }
标签:style blog http color 使用 os io 数据
原文地址:http://www.cnblogs.com/yudigege/p/3904971.html