1.監(jiān)控網(wǎng)絡(luò)狀態(tài)
// 1.獲得網(wǎng)絡(luò)監(jiān)控的管理者
AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager]边坤;
// 2.設(shè)置網(wǎng)絡(luò)狀態(tài)改變后的處理
[mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
// 當(dāng)網(wǎng)絡(luò)狀態(tài)改變了, 就會(huì)調(diào)用這個(gè)block
switch (status) {
case AFNetworkReachabilityStatusUnknown: // 未知網(wǎng)絡(luò)
[self setupRefresh];
break;
case AFNetworkReachabilityStatusNotReachable: // 沒(méi)有網(wǎng)絡(luò)(斷網(wǎng))
[SVProgressHUD showImage:nil status:@"請(qǐng)連接網(wǎng)絡(luò)"];
[self getStatusFromCache];
break;
case AFNetworkReachabilityStatusReachableViaWWAN: // 手機(jī)自帶網(wǎng)絡(luò)
[self setupRefresh];
break;
case AFNetworkReachabilityStatusReachableViaWiFi: // WIFI
[self setupRefresh];
break;
}
}];
// 3.開(kāi)始監(jiān)控
[mgr startMonitoring];
2.發(fā)送POST請(qǐng)求
// 請(qǐng)求參數(shù)
NSMutableDictionary *params = [NSMutableDictionary dictionary];
TWAccount *accout = [TWAccountTool account];
params[@"key"] = accout.key;
params[@"client"] = @"ios";
[[AFHTTPSessionManager manager] POST:@"http://www.jixuejiyong.com/mobile/index.php?act=hg_member_sns_home&op=friends_circle" parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
TTLog(@"%@",responseObject);
self.topics = [TWMyStatus mj_objectArrayWithKeyValuesArray:responseObject[@"datas"][@"tracelist"]];
// 緩存
[TWStatusCacheTool addStatuses:_topics];
//------------所有界面UI刷新都要放在主線(xiàn)程里面刷新-----------
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
//-----------------------------------------------------
[self.tableView.mj_header endRefreshing];
[SVProgressHUD dismiss];
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
[self.tableView.mj_header endRefreshing];
[SVProgressHUD showErrorWithStatus:@"請(qǐng)求錯(cuò)誤"];
}];
}
3.發(fā)送GET請(qǐng)求
NSMutableDictionary *params = [NSMutableDictionary dictionary];
params[@"type"] = @1;
params[@"phone"] = self.phone;
params[@"captcha"] = self.param1[@"datas"][@"captcha"];
params[@"nchash"] = self.param1[@"datas"][@"nchash"];
[[AFHTTPSessionManager manager] GET:@"http://www.jixuejiyong.com/mobile/index.php?act=hg_member_sns_home&op=get_captcha" parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (![responseObject[@"datas"][@"result"] isEqualToString:@"ture"]) {
[SVProgressHUD showErrorWithStatus:@"發(fā)送短信失敗"];
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
[SVProgressHUD showErrorWithStatus:@"發(fā)送短信失敗"];
}];
4.上傳圖片
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
// 獲取選中的圖片
UIImage *image = info[@"UIImagePickerControllerEditedImage"];
// 對(duì)圖片做裁剪
self.imgView.image = [ImageTool image:image byScalingToSize:CGSizeMake(120, 120)];
// 對(duì)裁剪過(guò)的圖片做本地化存儲(chǔ)
NSString *patch = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSData *imageData = UIImagePNGRepresentation(self.imgView.image);
[imageData writeToFile:[NSString stringWithFormat:@"%@/%@",patch,@"icon.png"] atomically:YES];
// 請(qǐng)求參數(shù)
NSMutableDictionary *params = [NSMutableDictionary dictionary];
TWAccount *accout = [TWAccountTool account];
params[@"key"] = accout.key;
params[@"client"] = @"ios";
// 上傳頭像
[[AFHTTPSessionManager manager] POST:@"http://www.jixuejiyong.com/mobile/index.php?act=hg_member_sns_home&op=changeAvatarHandle" parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
[formData appendPartWithFileData:imageData name:@"file" fileName:@"icon.png" mimeType:@"image/png"];
} progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
TWAccount *accout = [TWAccountTool account];
accout.member_avatar = responseObject[@"datas"][@"result"][@"src"];
[TWAccountTool saveAccount:accout];
TTLog(@"哈哈%@",responseObject[@"datas"][@"result"][@"src"]);
if ([responseObject[@"datas"][@"src"] isEqualToString:@""]) {
[SVProgressHUD showErrorWithStatus:@"操作失敗"];
}else{
// 請(qǐng)求參數(shù)
NSMutableDictionary *params1 = [NSMutableDictionary dictionary];
params1[@"key"] = accout.key;
params1[@"client"] = @"ios";
params1[@"id"] = accout.member_id;
params1[@"src"] = responseObject[@"datas"][@"result"][@"src"];
// 修改頭像
[[AFHTTPSessionManager manager] POST:@"http://www.jixuejiyong.com/mobile/index.php?act=hg_member_sns_home&op=avatarheader" parameters:params1 progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if ([responseObject[@"datas"][@"result"] isEqualToString:@"success"]) {
[SVProgressHUD showImage:nil status:@"修改成功"];
}else{
[SVProgressHUD showErrorWithStatus:@"操作失敗"];
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
[SVProgressHUD showErrorWithStatus:@"請(qǐng)求錯(cuò)誤"];
}];
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
[SVProgressHUD showErrorWithStatus:@"請(qǐng)求錯(cuò)誤"];
}];
[picker dismissViewControllerAnimated:YES completion:nil];
}
5.AFHTTPSessionManager內(nèi)部包裝了NSURLSession
AFHTTPRequestOperationManager內(nèi)部包裝了NSURLConnection
這兩者都可以發(fā)送網(wǎng)絡(luò)請(qǐng)求系任。
6.下載
- (void)download
{
// AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
//
// [mgr downloadTaskWithRequest:<#(NSURLRequest *)#> progress:<#(NSProgress *__autoreleasing *)#> destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
// return
// } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
//
// }];
}
7.上傳圖片的另一種做法(無(wú)參數(shù))
- (void)upload2
{
// AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
// [mgr uploadTaskWithRequest:<#(NSURLRequest *)#> fromData:<#(NSData *)#> progress:<#(NSProgress *__autoreleasing *)#> completionHandler:<#^(NSURLResponse *response, id responseObject, NSError *error)completionHandler#>];
}
8.解析xml的數(shù)據(jù)
- (void)xml
{
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
// responseSerializer 用來(lái)解析服務(wù)器返回的數(shù)據(jù)
// 告訴AFN婿奔,以XML形式解析服務(wù)器返回的數(shù)據(jù)
mgr.responseSerializer = [AFXMLParserResponseSerializer serializer];
NSDictionary *params = @{
@"username" : @"520it",
@"pwd" : @"520it",
@"type" : @"XML"
};
[mgr GET:@"http://120.25.226.186:32812/login" parameters:params success:^(NSURLSessionDataTask *task, NSXMLParser *parser) {
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"請(qǐng)求失敗---%@", error);
}];
}
9.解析返回?cái)?shù)據(jù)
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
// 直接使用“服務(wù)器本來(lái)返回的數(shù)據(jù)”屠橄,不做任何解析
mgr.responseSerializer = [AFHTTPResponseSerializer serializer];
// [AFJSONResponseSerializer serializer]; // 解析服務(wù)器返回的JSON數(shù)據(jù)
// [AFXMLParserResponseSerializer serializer]; // 解析服務(wù)器返回的XML數(shù)據(jù)