以微博爲例子:
新建一個數據交互的類繼承於NSObject
命名爲:AFNetWork.h
判斷網絡狀態:
-(void)reach
{
/*
AFNetworkReachabilityStatusUnknown = -1 未知
AFNetworkReachabilityStatusNotReachable = 0 無連接
AFNetworkReachabilityStatusReachableViaWWAN = 1 3G網絡
AFNetworkReachabilityStatusReachableViaWiFi = 2 wifi
*/
//它是個單例
//如果要檢查網絡的狀態的變化,必須用檢查管理器的單例
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
//檢查網絡狀態
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSLog(@"stactus=%ld",status);
}];
}
ViewController.m
AFNetWork *afnetwork=[[AFNetWork alloc] init];//初始化對象
[afnetwork reach];//調用reach方法上面
[afnetwork getRequestWithUrl:@"這裏放請求的URL"
WithParameters:@{@"請求參數的key":@"請求的value"}];
-(void)getRequestWithUrl:(NSString *)urlString WithParameters:(NSDictionary *)dictionary
{
NSURL *url=[NSURL URLWithString:urlString];
AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];//用來管理的
[manager GET:url.absoluteString//拿到完整的網址
parameters:dictionary//把對應的數據發送回去
progress:^(NSProgress * _Nonnull downloadProgress) {
NSLog(@"%@",downloadProgress);//進度類型的類
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"responseObject=%@",responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"error=%@",error);
}];
}
通過代碼在微博放內容:
ViewController.m
status:爲微博發送內容的接口名字key
value:爲內容
[afnetwork postWeiboWithUrl:@"這裏放請求的URL"
WithParmeters:@{@"請求參數的key":@"請求的value"},@"status":@"1234"}];
-(void)postWeiboWithUrl:(NSString *)urlString WithParmeters:(NSDictionary *)dictionary
{
AFHTTPSessionManager *manger=[AFHTTPSessionManager manager];
//返回格式json
//這裏的到的是JSon數據,默認的responseSerializer也是JSon數據
manger.responseSerializer=[AFJSONResponseSerializer serializer];//這裏的代碼不要寫錯 不要寫成AFJSONRequestSerializer
//得到的是NSData 數據
//manager.responseSerializer=[AFHTTPResponseSerializer serializer];
manger.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"application/json", nil];//接收返回類型
NSURL *url=[NSURL URLWithString:urlString];
[manger POST:url.absoluteString
parameters:dictionary
progress:^(NSProgress * _Nonnull uploadProgress) {
NSLog(@"uploadProgress=%@",uploadProgress);
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"responseObject=%@",responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"error=%@",error);
}];
}
使用代碼子微博發送圖片和內容
這張圖片是微博API裏面的:
-(void)postWeiboWithUrl:(NSString *)urlString WithParmeters:(NSDictionary *)dictionary WithImage:(NSString *)imageName
{
AFHTTPSessionManager *manger=[AFHTTPSessionManager manager];
manger.responseSerializer=[AFJSONResponseSerializer serializer];
manger.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"application/json ", nil];
NSURL *url=[NSURL URLWithString:urlString];
[manger POST:url.absoluteString//POST請求
parameters:dictionary
constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
NSData *data=UIImagePNGRepresentation([UIImage imageNamed:@"anglaybaby"]);//圖片轉data
NSData *data1=UIImageJPEGRepresentation([UIImage imageNamed:@"anglaybaby"], 0.5);//參數倍壓縮 壓縮0.5倍
[formData appendPartWithFileData:data1
name:@"pic"//API對應的名字
fileName:@"a.png"//名字無所謂
mimeType:@"png"];
} progress:^(NSProgress * _Nonnull uploadProgress) {
NSLog(@"uploadProgress=%@",uploadProgress);
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"responseObject=%@",responseObject);//請求回來的數據
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"error=%@",error);
}];
}
ViewController.m
//發佈內容和圖片
[afnetwork postWeiboWithUrl:@"這裏放請求的URL"
WithParmeters:@{@"請求參數的key":@"請求的value"},@"對應發送內容接口名":@"發送的內容"}
WithImage:@"發送的圖片名字"];