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"];
}
我接口用的是新浪微博的發送微博接口,附上一個效果圖: