引言 最近半年一直在學習JavaWeb,落下了iOS。如下寒假來臨,自己又有時間進一步學習iOS了。並且伴隨了在寒假準備搞定一個項目,工作之餘開始自己有意識的要提高,決定深入研究一下”網路”這一塊。 NSURLSession 自己開始寫的時候發現最基本的網路的請求不能用了,開始尋求答案。 如下:這是
引言
最近半年一直在學習JavaWeb,落下了iOS。如下寒假來臨,自己又有時間進一步學習iOS了。並且伴隨了在寒假準備搞定一個項目,工作之餘開始自己有意識的要提高,決定深入研究一下”網路”這一塊。
NSURLSession
自己開始寫的時候發現最基本的網路的請求不能用了,開始尋求答案。
如下:這是“聚合數據官網”的一個有關身份證查詢的API
//1、構造URL
NSString *URLString = @"http://apis.juhe.cn/idcard/index?key=官網提供的Key&cardno=身份證號";
NSURL *URL = [NSURL URLWithString:URLString];
//2、構造Request:HTTP請求類型、HTTP請求體、超市、HTTP請求頭、
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:URL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5];
//3、構造Session
NSURLSession *session = [NSURLSession sharedSession];
//4、構造task
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//請求結束後得到數據
NSError *myError;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&myError];
if (myError == nil) {
NSDictionary *result = [dic objectForKey:@"result"];
if (result) {
NSLog(@"地區:%@",[result objectForKey:@"area"]);
NSLog(@"性別:%@",[result objectForKey:@"sex"]);
NSLog(@"出生日期:%@",[result objectForKey:@"birthday"]);
}
}
}];
//5、喚醒task
[task resume];
還有在iOS 9 中HTTP協議也不能用了,請大家搜一下高級的內容:我的解決方案:改回HTTP:在Info.plist中添加一個Key:App Transport Security Settings。然後在該Key下麵添加添加一個Key:Allow Arbitrary Loads,值設為YES.