iOS_AFNetworking初体验 与 NSdata转NSDictionary

NSdata转NSDictionary比较少,先贴出来:

Ps:responseObject 是我网络请求返回来的数据,data类型。关于responseObject的来源不清楚的往下看AFNetworking的体验部分。

        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil];

转换结果:



AFNetworking部分:

以前没用过AFNetworking,最近尝试了一下。

第一步,在自己的项目里导入AFNetworking相关文件。


文件来源找一个使用AFNetworking做的demo就有了,网上很多,大家可以自己去下载一个demo,然后取出这些文件导入到自己的项目里就可以了。所以,这里就不提供链接了哈。


第二步,导入头文件。

#import "AFHTTPRequestOperation.h"  //发送网络请求
#import "AFHTTPRequestOperationManager.h"  //队列管理用的


第三步,设置参数。

调用方法(该方法自定义,相关参数看不懂的我最底下有备注出来),并传入相应的参数值。

- (void)sendRequestURL:(NSString *)url
                Parmas:(NSDictionary *)parmasDic
            HeadParams:(NSDictionary *)headParamsDic
            HttpMethod:(NSString *)httpMethodDic{
    
    //队列管理
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    
    NSMutableURLRequest *request = nil;
    
    //通过列管理把相应内容拼接成串赋值给request
    request = [manager.requestSerializer requestWithMethod:httpMethodDic URLString:url parameters:parmasDic];
    
    //根据关键字(key)取出字典内容,再根据取出的内容和key设置网络请求头
    for (NSString * key in headParamsDic)
    {
        [request setValue:headParamsDic[key] forHTTPHeaderField:key];
    }
    
    //创建请求操作并指定请求链接为上边的request
    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];
    
    //设置发送后的Block参数
    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

        //将返回的数据responseObject  NSLog出来是个data类型,这步是将data转换成字典
        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil];
        NSLog(@"data:%@",dict);

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"error:%@",error);
    }];
    //开始发送请求
    [operation start];
}

备注:

- (void)sendRequestURL:(NSString *)url

                Parmas:(NSDictionary *)parmasDic

            HeadParams:(NSDictionary *)headParamsDic

            HttpMethod:(NSString *)httpMethodDic;

这是本人自己写的方法,用来调用的时候直接传入相应参数就可完成发送请求操作。看不懂的在此做个解释:

url:接口/链接 的url地址。比如:新浪微博的API接口之一   获取最新的公共微博https://api.weibo.com/2/statuses/public_timeline.json

parmasDic:内容字典。这个要根据接口那边的参数进行设置。比如:access_token=123123,就要设置成关键字为“access_token”,内容为“123123”的字典。

headParamsDic:头部编码。比如:NSDictionary *headParams = [NSDictionary dictionaryWithObjectsAndKeys:@"multipart/form-data",@"Content-Type", nil];

httpMethodDic:传输方式。一般为GET或POST。


有的人可能还不是很理解上面的参数意思,再附上一个调用这个方法的操作示例:

Ps:access_token 和 status 即为上面的 parmasDic内容字典

//AFN 发送
- (void)AFNsendToken:(NSString *)access_token status:(NSString *)status url:(NSString *)url{
    //创建实体类。因为我把发送方法写在了实体类里。如果你们写在当前ViewController,就不需要这个,调用的时候直接[self sendRequestURL…………] 
    Entity *entity = [[Entity alloc]init];
    //添加内容字典
    NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:access_token,@"access_token",status,@"status", nil];
    //方法调用
    [entity sendRequestURL:url Parmas:params HeadParams:nil HttpMethod:@"POST"];
}

我接口用的是新浪微博的发送微博接口,附上一个效果图:


发布了29 篇原创文章 · 获赞 8 · 访问量 9万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章