Get
#import "ViewController.h"
#import "AFNetworking.h"
@interface ViewController ()
@end
@implementation ViewController
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self get];
}
//发送get请求
-(void)get
{
//1.创建会话管理者
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//2.发送请求
/*
第一个参数:请求路径
第二个参数:字典
第三个参数:progress 进度
第四个参数:success 成功回调
task :请求任务 task.response
responseObject:响应体信息(内部已经完成了序列化处理.JSON)
第五个参数:failure 失败的回调
error:错误信息
*/
[manager GET:@"http://120.25.226.186:32812/video" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
//3.解析
NSLog(@"%@--%@",[responseObject class],responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
}];
}
@end
31-15.gif
Post
#import "ViewController.h"
#import "AFNetworking.h"
@interface ViewController ()
@end
@implementation ViewController
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self post];
}
//发送post请求
/*
1)设置请求方法为POST
2)把参数设置在请求体里面
*/
-(void)post
{
//1.创建会话管理者
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//创建字典,转载参数
NSDictionary *dictM =@{
@"username":@"Zb",
@"pwd":@"CoderZb",
@"type":@"JSON"
};
//2.发送请求
/*
第一个参数:请求路径
第二个参数:字典
第三个参数:progress 进度
第四个参数:success 成功回调
task :请求任务 task.response
responseObject:响应体信息(内部已经完成了序列化处理.JSON)
第五个参数:failure 失败的回调
error:错误信息
*/
[manager POST:@"http://120.25.226.186:32812/video" parameters:dictM progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
//3.解析
NSLog(@"%@--%@",[responseObject class],responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
}];
}
@end
31-16.gif
UpLoad
#import "ViewController.h"
#import "AFNetworking.h"
@interface ViewController ()
@end
@implementation ViewController
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self upload];
}
//文件上传
-(void)upload
{
//1.创建会话管理者
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//2.发送POST请求上传文件
/*
第一个参数:请求路径 NSString
第二个参数:非文件参数
第三个参数:constructingBodyWithBlock 用来拼接要上传的文件数据
第四个参数:progress进度回调
第五个参数:success 上传成功的回调
第六个参数:failure 失败后的回调
*/
[manager POST:@"http://120.25.226.186:32812/upload" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
//方法1:
//拼接要上传的文件数据
/*
第一个参数:要上传的文件的二进制数据
第二个参数:参数名称 file
第三个参数:该文件上传到服务器之后应该以什么名称来保存
第四个参数:文件的MIMEType
*/
/*
UIImage *image= [UIImage imageNamed:@"100.7.png"];
NSData *imageData = UIImagePNGRepresentation(image);
[formData appendPartWithFileData:imageData name:@"file" fileName:@"haha.png" mimeType:@"image/png"];//加载本地的图片
*/
//方法2:
//FileURL:要上传的文件的URL路径
/*
NSURL *fileUrl = [NSURL fileURLWithPath:@"/Users/zhangbin/Desktop/100.7.png"];//加载指定路径上的图片
[formData appendPartWithFileURL:fileUrl name:@"file" fileName:@"1233.png" mimeType:@"image/png" error:nil];
*/
//方法3
//该方法是简单版本,该方法内部会自动的得到文件的名称以及文件的类型
NSURL *fileUrl = [NSURL fileURLWithPath:@"/Users/zhangbin/Desktop/100.7.png"];//加载指定路径上的图片
[formData appendPartWithFileURL:fileUrl name:@"file" error:nil];
} progress:^(NSProgress * _Nonnull uploadProgress) {
NSLog(@"%f",1.0 * uploadProgress.completedUnitCount / uploadProgress.totalUnitCount);
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"%@",responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"失败---%@",error);
}];
}
@end
31-18.gif
DownLoad
#import "ViewController.h"
#import "AFNetworking.h"
@interface ViewController ()
@end
@implementation ViewController
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self download];
}
//文件下载
-(void)download
{
//1.创建会话管理者
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//2.创建请求对象
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://120.25.226.186:32812/resources/images/minion_04.png"]];
//3.创建下载任务
/*
第一个参数:请求对象
第二个参数:进度回调 downloadProgress(获得进度信息)
第三个参数:destination
targetPath:文件的临时存储路径
response:响应头信息
返回值:NSURL(AFN内部已经实现了文件剪切的过程,但是需要我们告诉他应该把文件剪切到哪里)
第四个参数:completionHandler 请求完成的时候调用
response:响应头信息
filePath==fullPath 文件的最终目录
error:错误信息
*/
NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
NSLog(@"%f",1.0 *downloadProgress.completedUnitCount /downloadProgress.totalUnitCount);
} destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
NSString *fullPath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]stringByAppendingPathComponent:response.suggestedFilename];
NSLog(@"---%@---\n%@",targetPath,fullPath);
return [NSURL fileURLWithPath:fullPath];
} completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
NSLog(@"下载完成");
}];
//4.执行方法
[downloadTask resume];
}
@end
网友评论