以微博为例子:
新建一个数据交互的类继承于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:@"发送的图片名字"];