undefined

NSURLSession 网络请求

NSURLSession 可以发起以下任务,默认所有的任务都是挂起的。

以 source code 打开 Info.plist ,然后加上 以下代码就可以访问 http了

1
2
3
4
5
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

一、任务

1. DataTask

执行过程是异步的,默认是 GET 请求

1
2
3
4
5
6
7
8
9
10
11
12
- (void)dataTask1 {
NSURL* url = [NSURL URLWithString:@"http:127.0.0.1:9999/getDemo"];
// 用单例方式获取 session 对象
NSURLSession* session = [NSURLSession sharedSession];
// 封装一个任务,默认是挂起的
NSURLSessionDataTask* task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
NSLog(@"%@", json);
}];
// 启动任务
[task resume];
}

2. DownloadTask

默认会把文件下载到沙盒的 tmp 文件夹;下载完成后如果不对文件做任何操作,会自动删除文件;下载过程是异步的

AFN

一套操作网络的第三方框架

1
2
3
4
5
6
[[AFHTTPSessionManager manager] GET:@"http:127.0.0.1:9999/getDemo" parameters:nil headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
NSLog(@"%@", responseObject);
NSLog(@"%@", [responseObject class]);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"%@", error);
}];

NSURLSession:http://chuquan.me/2019/07/21/ios-network-nsurlsession/