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
headParamsDic:头部编码。比如:NSDictionary *headParams = [NSDictionary
dictionaryWithObjectsAndKeys:@"multipart/form-data",@"Content-Type",
nil];
有的人可能还不是很理解上面的参数意思,再附上一个调用这个方法的操作示例:
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"];
}
我接口用的是新浪微博的发送微博接口,附上一个效果图: