AFN 上传文件的方法,AFN 监测网络状态,Reachability 监测网络状态
AFN 上传文件的方法
{
// 1. 创建管理者
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
// 2. 发送请求
[mgr POST:@"http://localhost/upload/upload.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
// formData :设置上传文件所需要的参数,两种上传方法:
// <1> 通过本地文件的 url 上传
{
NSString *fromFile = @"/Users/likaining/Desktop/meinv.jpg";
NSURL *url = [NSURL URLWithString:@"file:///Users/likaining/Desktop/meinv.jpg"];
// url :需要上传文件的文件路径
// name :服务器接收的文件名.
// fileName: 文件在服务器中保存的名字
// mimeType : 文件类型
[formData appendPartWithFileURL:url name:@"userfile" fileName:@"meinv" mimeType:@"image/jpg" error:NULL];
}
// <2> 通过文件的 二进制数据 上传
{
NSData *data = [NSData dataWithContentsOfFile:zipFile];
[formData appendPartWithFileData:data name:@"userfile" fileName:@"meinv.zip" mimeType:@"gzip"];
}
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
// 上传成功之后的回调
NSLog(@"%@",responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// 上传失败之后的回调
NSLog(@"失败");
}];
}
/*-------------------------------------- 监测网络状态 -----------------------------------------*/
1.AFN 监测网络状态 2.了解 Reachability 监测网络状态
{
1. AFN 监测网络状态
{
// 创建 网络状态管理者
AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];
// 监测网络状态的改变
[mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
// 当网络状态发生改变的时候调用这个block
switch (status) {
case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"WIFI网络");
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"蜂窝网络");
break;
case AFNetworkReachabilityStatusNotReachable:
NSLog(@"没有网络");
break;
case AFNetworkReachabilityStatusUnknown:
NSLog(@"未知网络");
break;
default:
break;
}
}];
// 开始监控
[mgr startMonitoring];
}
2.Reachability 监测网络状态
{
// 注册通知观察者,网络状态改变时,接收通知!
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(InternetStatusChanged) name:kReachabilityChangedNotification object:nil];
// 控制器销毁时,移除通知观察者.
-(void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
// 根据当前网络状态,做出不同的响应.
- (void)InternetStatusChanged
{
NSLog(@"网络状态改变了");
if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus == ReachableViaWiFi) {
NSLog(@"Wifi 网络");
}
if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus == ReachableViaWWAN) {
NSLog(@"蜂窝移动网络");
}
if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus == NotReachable)
{
NSLog(@"没有网络");
}
}
// 创建 Reachability 对象,开始监测网络状态的改变
- (void)MonitorInternetStatus
{
Reachability *CZReachability = [Reachability reachabilityForInternetConnection];
[CZReachability startNotifier];
self.reachability = CZReachability;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self MonitorInternetStatus];
}
}
}