//GET
请求
,
也可以给服务器发送信息
,
也有参数
(
微博用户名
,
用户
id)
//1. 构造 URL, 参数直接拼接在 url 连接后
NSURL *url = [NSURL URLWithString: @"http://news-at.zhihu.com/api/3/news/4602734" ];
//2. 构造 Request
// 把 get 请求的请求头保存在 request 里
//NSURLRequest *request = [NSURLRequest requestWithURL:url];
// 参数
// (1)url
// (2) 缓存策略
// (3) 超时的时间 , 经过 120 秒之后就放弃这次请求
//NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:120];
//NSURLRequest 不可变 , 不能动态的添加请求头信息
// 可变的对象
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//(1) 设置请求方式
[request setHTTPMethod: @"GET" ];
//(2) 超时时间
[request setTimeoutInterval:120];
//(3) 缓存策略
[request setCachePolicy:NSURLRequestReturnCacheDataElseLoad];
//(4) 设置请求头其他内容
//[request setValue:<#(NSString *)#> forHTTPHeaderField:<#(NSString *)#>];
//[request addValue:<#(NSString *)#> forHTTPHeaderField:<#(NSString *)#>];
//[request setAllHTTPHeaderFields:<#(NSDictionary *)#>];
[request setValue: @"gzip" forHTTPHeaderField: @"Accept-Encoding" ]; // 告诉服务 , 返回的数据需要压缩
//3. 构造 Session
NSURLSession *session = [NSURLSession sharedSession];
//4. 构造要执行的任务 task
/**
* task
*
* @param data 返回的数据
* @param response 响应头
* @param error 错误信息
*
*/
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error == nil ) {
/*
NSString *dataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"data: %@", dataStr);
*/
//json --> data
//NSJSONSerialization *jsonData = [NSJSONSerialization dataWithJSONObject:<#(id)#> options:<#(NSJSONWritingOptions)#> error:<#(NSError *__autoreleasing *)#>]
/*
options:
1. 读取 reading
NSJSONReadingMutableContainers 生成可变的对象 , 不设置这个 option, 默认是创建不可变对象
NSJSONReadingMutableLeaves 生成可变的字符串 MutableString(iOS7+ 有 bug)
NSJSONReadingAllowFragments 允许 json 数据最外层不是字典或者数组
2. 写入 writing
NSJSONWritingPrettyPrinted 生成 json 数据是格式化的 , 有换行 , 可读性高
*/
//data --> json
NSString *dataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog( @"data: %@" , dataStr);
}
}];
//5.
//1. 构造 URL, 参数直接拼接在 url 连接后
NSURL *url = [NSURL URLWithString: @"http://news-at.zhihu.com/api/3/news/4602734" ];
//2. 构造 Request
// 把 get 请求的请求头保存在 request 里
//NSURLRequest *request = [NSURLRequest requestWithURL:url];
// 参数
// (1)url
// (2) 缓存策略
// (3) 超时的时间 , 经过 120 秒之后就放弃这次请求
//NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:120];
//NSURLRequest 不可变 , 不能动态的添加请求头信息
// 可变的对象
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//(1) 设置请求方式
[request setHTTPMethod: @"GET" ];
//(2) 超时时间
[request setTimeoutInterval:120];
//(3) 缓存策略
[request setCachePolicy:NSURLRequestReturnCacheDataElseLoad];
//(4) 设置请求头其他内容
//[request setValue:<#(NSString *)#> forHTTPHeaderField:<#(NSString *)#>];
//[request addValue:<#(NSString *)#> forHTTPHeaderField:<#(NSString *)#>];
//[request setAllHTTPHeaderFields:<#(NSDictionary *)#>];
[request setValue: @"gzip" forHTTPHeaderField: @"Accept-Encoding" ]; // 告诉服务 , 返回的数据需要压缩
//3. 构造 Session
NSURLSession *session = [NSURLSession sharedSession];
//4. 构造要执行的任务 task
/**
* task
*
* @param data 返回的数据
* @param response 响应头
* @param error 错误信息
*
*/
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error == nil ) {
/*
NSString *dataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"data: %@", dataStr);
*/
//json --> data
//NSJSONSerialization *jsonData = [NSJSONSerialization dataWithJSONObject:<#(id)#> options:<#(NSJSONWritingOptions)#> error:<#(NSError *__autoreleasing *)#>]
/*
options:
1. 读取 reading
NSJSONReadingMutableContainers 生成可变的对象 , 不设置这个 option, 默认是创建不可变对象
NSJSONReadingMutableLeaves 生成可变的字符串 MutableString(iOS7+ 有 bug)
NSJSONReadingAllowFragments 允许 json 数据最外层不是字典或者数组
2. 写入 writing
NSJSONWritingPrettyPrinted 生成 json 数据是格式化的 , 有换行 , 可读性高
*/
//data --> json
NSString *dataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog( @"data: %@" , dataStr);
}
}];
//5.
[task resume];