重点:
掌握 AFN 上传文件的方法
{
// 1. 创建管理者
AFHTTPRequestOperationMa
nager *mgr = [AFHTTPRequestOperationMa
nager manager];
// 2. 发送请求
[mgr POST:@"http://localhost/upload/upload.php" parameters:nil constructingBodyWithBloc
k:^(id 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 监测网络状态
{
// 创建 网络状态管理者
AFNetworkReachabilityMan
ager *mgr = [AFNetworkReachabilityMan
ager sharedManager];
// 监测网络状态的改变
[mgr setReachabilityStatusCha
ngeBlock:^(AFNetworkReachabilitySta
tus status) {
// 当网络状态发生改变的时候调用这个block
switch (status) {
case AFNetworkReachabilitySta
tusReachableViaWiFi:
NSLog(@"WIFI网络");
break;
case AFNetworkReachabilitySta
tusReachableViaWWAN:
NSLog(@"蜂窝网络");
break;
case AFNetworkReachabilitySta
tusNotReachable:
NSLog(@"没有网络");
break;
case AFNetworkReachabilitySta
tusUnknown:
NSLog(@"未知网络");
break;
default:
break;
}
}];
// 开始监控
[mgr startMonitoring];
}
2.Reachability 监测网络状态
{
// 注册通知观察者,网络状态改变时,接收通知!
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(InternetStatusChanged) name:kReachabilityChangedNoti
fication object:nil];
// 控制器销毁时,移除通知观察者.
-(void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
// 根据当前网络状态,做出不同的响应.
- (void)InternetStatusChanged
{
NSLog(@"网络状态改变了");
if ([Reachability reachabilityForLocalWiFi
].currentReachabilityStatu
s == ReachableViaWiFi) {
NSLog(@"Wifi 网络");
}
if ([Reachability reachabilityForInternetC
onnection].currentReachabilityStatu
s == ReachableViaWWAN) {
NSLog(@"蜂窝移动网络");
}
if ([Reachability reachabilityForInternetC
onnection].currentReachabilityStatu
s == NotReachable)
{
NSLog(@"没有网络");
}
}
// 创建 Reachability 对象,开始监测网络状态的改变
- (void)MonitorInternetStatus
{
Reachability *CZReachability = [Reachability reachabilityForInternetC
onnection];
[CZReachability startNotifier];
self.reachability = CZReachability;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self MonitorInternetStatus];
}
}
}
{
}
重点: 1.AFN 监测网络状态
{
}