1 // 2 // ViewController.m 3 // 01-NSURLSession请求网络 4 // 5 // Created by kangkathy on 15/11/25. 6 // Copyright © 2015年 kangkathy. All rights reserved. 7 // 8 9 #import "ViewController.h" 10 11 @interface ViewController () 12 13 @end 14 15 @implementation ViewController 16 17 - (void)viewDidLoad { 18 [super viewDidLoad]; 19 20 } 21 22 - (IBAction)getAction:(id)sender { 23 24 /* 25 网络请求的流程: 26 1.构造NSURL连接地址 27 2.构造NSURLRequest请求对象,包含请求头和请求体信息。 28 3.构造NSURLSessionConfiguration,可选 29 4.构造NSURLSession会话对象 30 5.创建请求任务 31 6.发送网络请求 32 33 */ 34 35 NSURL *url = [NSURL URLWithString:@"http://piao.163.com/m/cinema/list.html?app_id=1&mobileType=iPhone&ver=2.6&channel=appstore&deviceId=9E89CB6D-A62F-438C-8010-19278D46A8A6&apiVer=6&city=110000"]; 36 37 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 38 39 request.timeoutInterval = 15; 40 request.HTTPMethod = @"GET"; 41 //请求头的设置 42 // request.allHTTPHeaderFields = @{ 43 // 44 // }; 45 // request setValue:<#(nullable NSString *)#> forHTTPHeaderField:<#(nonnull NSString *)#> 46 47 NSURLSession *session = [NSURLSession sharedSession]; 48 49 50 NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { 51 //网络请求完成,获取响应数据后会回调的block 52 //data表示获取的数据,response表示请求对象,error表示请求错误 53 NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; 54 //获取状态码 55 NSLog(@"statusCode:%li", httpResponse.statusCode); 56 57 //获取响应头 58 NSDictionary *responseHeader = httpResponse.allHeaderFields; 59 NSLog(@"responseHeader:%@", responseHeader); 60 61 NSError *jsonError = nil; 62 63 NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError]; 64 65 if (!jsonError) { 66 67 //显示我们的数据,如果要更新UI则需要回到主线程完成。 68 NSLog(@"%@", result); 69 70 } 71 72 73 74 }]; 75 76 //发送网络请求 77 [task resume]; 78 79 80 } 81 82 - (IBAction)postAction:(id)sender { 83 84 NSURL *url = [NSURL URLWithString:@"http://piao.163.com/m/cinema/schedule.html?app_id=1&mobileType=iPhone&ver=2.6&channel=appstore&deviceId=9E89CB6D-A62F-438C-8010-19278D46A8A6&apiVer=6&city=110000"]; 85 86 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 87 88 request.timeoutInterval = 15; 89 request.HTTPMethod = @"POST"; 90 91 NSString *bodyString = @"cinema_id=1533"; 92 NSData *bodyData = [bodyString dataUsingEncoding:NSUTF8StringEncoding]; 93 //POST请求的请求参数加在请求体中。 94 request.HTTPBody = bodyData; 95 96 NSURLSession *session = [NSURLSession sharedSession]; 97 98 99 NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { 100 101 102 NSError *jsonError = nil; 103 104 NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError]; 105 106 if (!jsonError) { 107 108 //显示我们的数据,如果要更新UI则需要回到主线程完成。 109 NSLog(@"%@", result); 110 111 } 112 113 114 }]; 115 116 [task resume]; 117 118 119 120 121 122 } 123 @end