IOS 第三方库- AFNetworking

1,AFNetWorking基本使用

1)GET请求

- (void)getDemo2
{
    NSString *urlString = @"http://p.3.cn/prices/mgets";
    
    NSDictionary *param = @{@"skuIds": @"J_1111111", @"type": @"1"};
    
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    
    //get请求,参数可以这样写
    [manager GET:urlString parameters:param success:^(AFHTTPRequestOperation * operation, id responseObject) {
        NSLog(@"%@  %@", responseObject, [NSThread currentThread]);
    } failure:^(AFHTTPRequestOperation * operation, NSError * error) {
        NSLog(@"%@", error);
    }];
    
    NSLog(@"done");
}

- (void)getDemo1
{
    //get请求,参数直接拼成字符串
    NSString *urlString = @"http://p.3.cn/prices/mgets?skuIds=J_1289996&type=1";
    
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    
    [manager GET:urlString parameters:nil success:^(AFHTTPRequestOperation * operation, id responseObject) {
        NSLog(@"%@  %@", responseObject, [NSThread currentThread]);
    } failure:^(AFHTTPRequestOperation * operation, NSError * error) {
        NSLog(@"%@", error);
    }];

    NSLog(@"done");
}

2)POST请求

/**
 1. 没有URL,只需要指定一个url的字符串
 2. 网络请求是异步。 完成以后的回调代码快直接是在主线程
 3. 已经实现了反序列化
 4. 如果get方法,需要传递参数,可以使用字段的方式传递。程序猿不需要关心url里面的参数格式
 */
//POST 请求
- (void)getDemo3
{
    NSString *urlString = @"http://p.3.cn/prices/mgets";
    
    NSDictionary *param = @{@"skuIds": @"J_1111111", @"type": @"1"};
    
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    
    [manager POST:urlString parameters:param success:^(AFHTTPRequestOperation * operation, id responseObject) {
        NSLog(@"%@  %@", responseObject, [NSThread currentThread]);
    } failure:^(AFHTTPRequestOperation * operation, NSError * error) {
        NSLog(@"%@", error);
    }];
    
    NSLog(@"done");
}

3)解析不同的返回数据类型

- (void)getDemo4
{
    /**
     // 指定我们的响应的解析器是解析XML (会返回NSXMLParser:对象)也就是需要SAX方式手动解析
     // 假如想使用DOM进行解析XML,可以指定响应的类型是二进制。拿到二进制数据就可以进行DOM解析
     
     // 请求的数据格式,发送给服务器的格式
     self.requestSerializer = [AFHTTPRequestSerializer serializer];
     AFHTTPRequestSerializer  二进制的数据格式 (默认的)
     AFJSONRequestSerializer  JSON
     AFPropertyListRequestSerializer PList
     
     // 响应的解析器(默认直接解析JSON)
     manager.responseSerializer = [AFJSONResponseSerializer serializer];
     AFHTTPResponseSerializer   二进制
     AFJSONResponseSerializer   JSON  (默认的数据格式)
     AFXMLParserResponseSerializer  XML的解析器
     AFImageResponseSerializer  Image
     (处理网络图片的问题, SDWebImage)
     
     */
    
    NSString *urlString = @"http://wthrcdn.etouch.cn/WeatherApi?citykey=101010101";
    
    NSDictionary *param = @{@"citykey": @"101010100"};
    
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    
//    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    
    
    [manager GET:urlString parameters:nil success:^(AFHTTPRequestOperation * operation, id responseObject) {
        NSLog(@"%@  %@", responseObject, [NSThread currentThread]);
    } failure:^(AFHTTPRequestOperation * operation, NSError * error) {
        NSLog(@"%@", error);
    }];
}

4)上传图片

NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
    [dic setObject:[NSNumber numberWithInt:24] forKey:@"uid"];
    [dic setObject:@"submit" forKey:@"tijao"];
    
    UIImage *newImage = [UIImage imageNamed:@"head.png"];
    NSData *data = UIImageJPEGRepresentation(newImage, 0.3);//这个数越小,图片占的字节数越少,压缩图片,压缩转换格式并上传
    
    [[AFHTTPSessionManager manager] POST:@"http://www.dcjyxwzx.cn/upload/change_avatar" parameters:dic constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {<pre name="code" class="objc"><span style="white-space:pre">	</span>// 要上传的图片的路径
        NSURL *fileUrl = [[NSBundle mainBundle] URLForResource:@"Snip20150123_3.png" withExtension:nil];
        
        /**
         FileURL:要上传的文件的url
         name: 上传到服务器,接受这个图片的字段名
         这种方式,没办法修改这个文件在服务器的名称
         */
<span style="white-space:pre">	</span>//        [formData appendPartWithFileURL:fileUrl name:@"userfile" error:NULL];
        /**
         FileURL:要上传的文件的url
         name: 上传到服务器,接受这个图片的字段名
         fileName :  这个文件在服务器的名称
         mimeType: 表示要上传的文件的类型
             格式: 大类/小类
             JPG image/jpg
             PNG image/png
             JSON application/json
         
         */
//第二个参数代表的是键,要与接口文档保持一致 [formData appendPartWithFileData:data name:@"filename" fileName:@"1.jpeg" mimeType:@"image/jpeg"]; } success:^(NSURLSessionDataTask *operation, id responseObject) { NSLog(@"Success: %@", responseObject); } failure:^(NSURLSessionDataTask *task, NSError *error) { NSLog(@"Error: %@", error); }];

 

5)AFNetWorkIng的其它用法详解

http://blog.sina.com.cn/s/blog_af73e7a70102v0l0.html

http://blog.csdn.net/daiyelang/article/details/38421341



使用注意事项

1)在使用AFNetworking的时候,如果你的url中出现中文字符崩溃,你需要把中文转换一下urlString = [urlString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值