iOS开发 - AFNetworking 的使用(第三方库)

导入 #import “UIKit+AFNetworking.h”

调用方法 [self.headView setImageWithURL:[NSURL URLWithString:model.img] placeholderImage:nil];
图片会自动缓存在内存中

GET请求

//AFHTTPSessionManager是对系统的NSURLSession的封装
AFHTTPSessionManager * manager = [AFHTTPSessionManager manager];

0.//设置响应器
manager.responseSerializer = [AFJSONResponseSerializer serializer];

/*
 AFHTTPResponseSerializer     //数据流 NSData
 AFJSONResponseSerializer     //json数据 默认是json响应器 接口为JSON文件格式 对于(例如lol接口)html格式 虽然内容为json格式 但是并不能使用这个方法 可以指定可接受的数据类型 manager.responseSerializer.acceptableContentTypes

 AFXMLParserResponseSerializer      //xml数据  使用的是系统的xml解析类,替我们解析数据,而通常使用第三方解析xml数据
 */

1.//可接受的数据类型
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@”text/html”];
//请求头的字段Content-Type

2.//GET方法
[manager GET:@”http://qt.qq.com/static/pages/news/phone/c10_list_1.shtml” parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
//第一个参数 NSURLSessionDataTask 普通数据下载任务
//第二个参数 返回的数据
// NSLog(@”%@”,responseObject);

} failure:^(NSURLSessionDataTask *task, NSError *error) { }];
/*
    第一个参数 网址字符串
    第二个参数 接口参数
    第三个参数 数据请求响应成功的回调
    第四个参数 数据请求响应失败的回调
 */

3.//reachabilityManager 检查当前网络状态
[manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
/*
AFNetworkReachabilityStatusUnknown = -1, //未知
AFNetworkReachabilityStatusNotReachable = 0, //无网络
AFNetworkReachabilityStatusReachableViaWWAN = 1, //蜂窝网络
AFNetworkReachabilityStatusReachableViaWiFi = 2; //wifi网络
*/
NSLog(@”11”);
switch (status) {
case …:
break;
}
}];
//开始检测
[manager.reachabilityManager startMonitoring];

登录请求

NSString * urlStr= @"http://10.0.8.8/sns/my/login.php";

urlStr = [NSString stringWithFormat:@"%@?username=%@&password=%@",urlStr,self.userName.text,self.passWord.text];

AFHTTPSessionManager * manager =[AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];

[manager GET:urlStr parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {

    id obj = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];        
} failure:^(NSURLSessionDataTask *task, NSError *error) {
    NSLog(@"%@",error);
}];

POST请求

注册请求

NSString * urlStr = @"http://10.0.8.8/sns/my/register.php";

NSDictionary * dic = @{@"username":self.userName.text,@"password":self.passWord.text,@"email":self.email.text};

AFHTTPSessionManager * manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];

[manager POST:urlStr parameters:dic success:^(NSURLSessionDataTask *task, id responseObject) {
    id obj1 = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];

} failure:^(NSURLSessionDataTask *task, NSError *error) {}];


AFHTTPSessionManager * manager = [AFHTTPSessionManager manager];

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

上传请求

[manager POST:@"http://10.0.8.8/sns/my/upload_headimage.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    UIImage * image = [UIImage imageNamed:@"account_candou"];
    //压缩图片/把图片转成NSData
NSData * data= UIImagePNGRepresentation(image);

    //提交表单
    //上传数据的时候 可以传普通的数据 json数据 xml数据 表单
    //表单包含多种类型的数据 可以包含图片

    //上传图片需要调用的方法 这个方法可以拼接表单
[formData appendPartWithFileData:data name:@"headimage" fileName:@"account_candou" mimeType:@"image/png"];
    //要上传的数据/文件
    //服务器/接口对应的参数
    //文件的名字
    //文件的类型

    NSData * urlData = [@"uid" dataUsingEncoding:NSUTF8StringEncoding];

    //拼接普通数据
[formData appendPartWithFormData:urlData name:@"uid"];

} success:^(NSURLSessionDataTask *task, id responseObject) {

    NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];

    for (id obj in dic) {
        NSLog(@"%@:%@",obj,dic[obj]);
    }
} failure:^(NSURLSessionDataTask *task, NSError *error) {
    NSLog(@"错误:%@",error);
}];

取消正在请求的任务

    [manager.operationQueue cancelAllQueue];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值