使用NSURLConnection的網絡請求,最好定義一個類方法,在主線程中直接調用類方法獲取請求到的網絡數據 //構建類方法--請求網絡 + (void)requestData:(NSString *)urlStr httpMethod:(NSString *)method params:(NSMutableDictionary *)params comletionHandle:(void (^)(id result))block { //1.構建URL urlStr = [BASE_URL stringByAppendingString:urlStr]; NSURL *url = [NSURL URLWithString:urlStr]; //2.request構建 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; request.timeoutInterval = 60; request.HTTPMethod = method; //判斷請求方式 if ([method isEqualToString:@"GET"]) { //往URL後直接拼接 NSMutableString *paramsStr = [[NSMutableString alloc]initWithString:@"?"]; //拼接樣式 //拼接URL---》https://api.weibo.com/2/statuses/home_timeline.json?access_token=2.00SllYeF568jxC1082c39bc40_Vqyg&username=aaa&pass=bbb //循環拼接參數字典 for (int i = 0; i < params.count; i ++) { NSString *key = params.allKeys[i]; NSString *value = params[key]; //開始拼接= [paramsStr appendFormat:@"%@=%@",key,value]; //拼接&符號 //最後一個不再用&符號拼接 if (i < params.count-1) { [paramsStr appendFormat:@"&"]; } } //得到拼接後的URL(將主URL與拼接的URL 拼接在一起得到完整的URL) request.URL = [NSURL URLWithString:[urlStr stringByAppendingString:paramsStr]]; }else if ([method isEqualToString:@"POST"]){ //將參數添加到請求體中 NSMutableString *paramsStr = [[NSMutableString alloc]initWithString:@""]; for (int i = 0; i < params.count; i ++) { NSString *key = params.allKeys[i]; NSString *value = params[key]; //開始拼接 [paramsStr appendFormat:@"%@=%@",key,value]; if (i < params.count - 1) { [paramsStr appendFormat:@"&"]; } } //添加到請求體中 //將字符串轉化為數據 NSData *data = [paramsStr dataUsingEncoding:NSUTF8StringEncoding]; request.HTTPBody = data; } //3.開始請求網絡 NSOperationQueue *queue = [[NSOperationQueue alloc]init]; [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { if (connectionError) { NSLog(@"error----%@",connectionError); return ; } //成功獲取數據 //開始解析數據 id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; //返回數據 dispatch_async(dispatch_get_main_queue(), ^{ block(result); }); }]; }