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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章