库AFNetworking的使用
2024-10-19 00:23:35
库AFNetworking的使用
1.GET请求(html,json,xml)
#pragma mark -GET请求
-(void)testGetRequset{ NSString *urlString = @"http://www.baidu.com";
urlString = @"http://m.weather.com.cn/data/101010100.html"; //定义AFNetworking管理
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
//注意: 默认认为数据是JSON,content-type也是JSON, responseObject是解析的字典和数组, 不是产生错误Code=-1016
//解决: 设置解析器为HTTP形式, 下载回来是NSData
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager GET:urlString parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { //responseObject重要参数,包含下载数据
//NSLog(@"o = %@",responseObject);
NSString *str = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"str = %@",str); } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error = %@",error);
}];
}
2.POST请求
#pragma mark - POST请求
-(void)testPostRequest{ //POST接口:http://quiet.local/testdir/login.php
//参数1: @"user" : @"quiet"
//参数2: @"password" : @"123"
NSString *urlString = @"http://quiet.local/testdir/login.php"; AFHTTPRequestOperationManager *mamager = [AFHTTPRequestOperationManager manager];
mamager.responseSerializer = [AFHTTPResponseSerializer serializer]; //参数1: 传入地址
//参数2: 传入URL请求的参数, 格式传入字典
[mamager POST:urlString parameters:@{@"user":@"quiet",@"password":@"123"} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSString *str = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"str = %@",str);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error = %@",error);
}];
}
3.上传文件(上传图片)
#pragma mark - 上传文件(上传图片)
-(void)testUploadFile{
//POST上传接口
NSString *urlString = @"http://quiet.local/uploadtest/upload.php";
//参数名: image : 参数值是图片
AFHTTPRequestOperationManager *mamager = [AFHTTPRequestOperationManager manager];
mamager.responseSerializer = [AFHTTPResponseSerializer serializer];
[mamager POST:urlString parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { //实现: 上传的数据附加到请求体中
//mimeType 多用途互联网邮件扩展类型, 每种文件都有一个类型
NSString *path = [[NSBundle mainBundle] pathForResource:@"2.jpg" ofType:nil];
NSLog(@"path = %@",path);
[formData appendPartWithFileURL:[NSURL fileURLWithPath:path] name:@"image" fileName:@"quiet1.jpg" mimeType:@"image/jpeg" error:nil]; } success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSString *str = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"str = %@",str);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error = %@",error);
}];
}
4.下载文件(下载图片)
#pragma mark -下载文件
-(void)testDownloadFile{
NSString *urlString = @"http://imgcache.qq.com/club/item/avatar/zip/7/i87/all.zip"; //创建会话管理器对象(通过默认配置)
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]] progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) { //返回文件保存位置
NSString *path = [NSString stringWithFormat:@"%@/Documents/all.zip",NSHomeDirectory()];
NSLog(@"path = %@",path);
return [NSURL fileURLWithPath:path]; } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
NSLog(@"下载完成");
}];
//启动任务
[task resume];
}
5.监控网络状态
-(void)testMonitorNetworkStatus{ AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:@"www.baidu.com"]];
[manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSDictionary *dict =@{
@(AFNetworkReachabilityStatusUnknown):@"未知",
@(AFNetworkReachabilityStatusNotReachable):@"不可达",
@(AFNetworkReachabilityStatusReachableViaWWAN):@"GPRS",
@(AFNetworkReachabilityStatusReachableViaWiFi):@"Wifi",}; NSLog(@"状态为 %@",dict[@(status)]); }];
//开启状态监视
[manager.reachabilityManager startMonitoring]; }
最新文章
- js学习之函数的参数传递
- 免费的ER 设计软件调研
- C# button 去边框
- loadrunner11录制报 NOT PROXIED!错误,无法生成脚本
- intervention/image intervention/imagecache
- python——异常处理
- transparent 的新问题
- JAVA布局管理器
- Chapter 1 First Sight——36
- Apache多端口配置
- 快速搞定用Vue+Webpack搭建前端项目(学习好久了,该写点东西了......)
- 【非官方】Surging 微服务框架使用入门
- HDU 5506(GT and set)
- Ehcart整合百度地图
- linux和sqlserver 2017的安装
- F. Shovels Shop 背包DP
- Codeplex最流行25个开源项目
- Springboot打包war
- Maven配置阿里云镜像仓库
- php 获取淘宝搜索词 内容
热门文章
- Hibernate入门学习-安装hibernate插件
- Holographic Remoting Player
- Selenium-java-Log4j环境搭建和
- SpringMVC入门案例及请求流程图(关于处理器或视图解析器或处理器映射器等的初步配置)
- Go语言开发第一个Hello,World
- [LeetCode] Read N Characters Given Read4 用Read4来读取N个字符
- Android,ios,WP三大手机系统对比
- jqGrid jqGrid分页参数+条件查询
- 反序列化漏洞问题研究之php篇
- table表框去掉相邻的间隔