iOSAFNetworking

  • 用AFNetworking發(fā)送Post和Get請(qǐng)求

#import "ViewController.h"
#import "AFNetworking.h"
@interface ViewController ()
@end

@implementation ViewController
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    [self sendGet];
}
-(void)sendPost
{
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    // http://120.25.226.186:32812/login?username=123&pwd=122&type=JSON
    
    NSDictionary *dict  = @{
                            @"username":@"520it",
                            @"pwd":@"520it",
                            @"type":@"JSON"
                            };
    //2.發(fā)送GET請(qǐng)求
    /*
     第一個(gè)參數(shù):請(qǐng)求路徑(不包含參數(shù)).NSString
     第二個(gè)參數(shù):字典(發(fā)送給服務(wù)器的數(shù)據(jù)-參數(shù))
     第三個(gè)參數(shù):progress 進(jìn)度回調(diào)
     第四個(gè)參數(shù):success 成功回調(diào)
     task:請(qǐng)求任務(wù)
     responseObject:響應(yīng)體信息(JSON--->OC對(duì)象)
     第五個(gè)參數(shù):failure 失敗回調(diào)
     error:錯(cuò)誤信息
     響應(yīng)頭:task.response
     */
    [manager POST:@"http://120.25.226.186:32812/login" parameters:dict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"%@---%@------",[responseObject class],responseObject);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"error  =%@",error);
    }];
}
-(void)sendGet
{
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    NSDictionary *dict  = @{
                            @"username":@"520it",
                            @"pwd":@"520it",
                            @"type":@"JSON"
                            };
    [manager GET:@"http://120.25.226.186:32812/login" parameters:dict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"responseObject = %@---%@------",[responseObject class],responseObject);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"error = %@",error);
    }];
}
@end
  • AFNetworking下載

-(void)download
{
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/resources/videos/minion_01.mp4"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    /**
     第一個(gè)參數(shù):請(qǐng)求對(duì)象
     第二個(gè)參數(shù):progress 進(jìn)度回調(diào) downloadProgress
     第三個(gè)參數(shù):destination 回調(diào)(目標(biāo)位置)
                有返回值
                targetPath 臨時(shí)文件路徑
                response 響應(yīng)頭信息
     第四個(gè)參數(shù):completionHandler 下載完成之后的回調(diào)
                filePath        最終的文件路徑
     */
    NSURLSessionDownloadTask *downloadTask  = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
       /**
        *  監(jiān)聽下載進(jìn)度
           completedUnitCount 已經(jīng)下載的數(shù)據(jù)大小
           totalUnitCount     文件數(shù)據(jù)的總大小
        */
        NSLog(@"---%f",1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount);
    } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
        
        NSString *fullPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]stringByAppendingPathComponent:response.suggestedFilename];
        
        NSLog(@"targetPath:%@",targetPath);
        
        NSLog(@"fullPath:%@",fullPath);
        return  [NSURL fileURLWithPath:fullPath];
    } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
        NSLog(@"%@",filePath);
    }];
    
    [downloadTask resume];
}

  • AFNetworking上傳

-(void)upload
{
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    [manager POST:@"http://120.25.226.186:32812/upload" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
        UIImage *image = [UIImage imageNamed:@"Snip20160227_128"];
        NSData *imageData = UIImagePNGRepresentation(image);
        /*
         第一個(gè)參數(shù):二進(jìn)制數(shù)據(jù) 要上傳的文件參數(shù)
         第二個(gè)參數(shù):服務(wù)器規(guī)定的
         第三個(gè)參數(shù):該文件上傳到服務(wù)器以什么名稱保存
         第四個(gè)參數(shù):圖片的MIME類型
         */
//        [formData appendPartWithFileData:imageData name:@"imageData" fileName:@"111.png" mimeType:@"image/png"];
        [formData appendPartWithFileURL:[NSURL fileURLWithPath:@"/Users/yao/Desktop/Snip20160227_128.png"] name:@"file" error:nil];
    } progress:^(NSProgress * _Nonnull uploadProgress) {
        NSLog(@"----%f", 1.0 * uploadProgress.completedUnitCount / uploadProgress.totalUnitCount);
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"上傳成功---%@",responseObject);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"上傳失敗---%@",error);
    }];
}
  • AFNetworing解析XML和其他不同類型的數(shù)據(jù)

#import "ViewController.h"
#import "AFNetworking.h"
@interface ViewController ()<NSXMLParserDelegate>

@end

@implementation ViewController
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    [self httpData2];
}
-(void)XML
{
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    //修改AFN的解析方案,默認(rèn)為JSON
    manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
    NSDictionary *paramDict = @{
                                @"type":@"XML"
                                };
    [manager GET:@"http://120.25.226.186:32812/video" parameters:paramDict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSXMLParser *parser =(NSXMLParser *)responseObject;
        
        //設(shè)置代理
        parser.delegate = self;
        
        //開始解析
        [parser parse];
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"error = %@",error);
    }];
}
#pragma mark NSXMLParserDelegate
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict
{
    NSLog(@"%@--%@",elementName,attributeDict);
}
-(void)httpData
{
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    /**
     *  如果返回的既不是XML也不是JSON可以修改解析方案為AFN自帶解析方案
     */
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    [manager GET:@"http://120.25.226.186:32812/resources/images/minion_01.png" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task,id  _Nullable responseObject) {
        NSLog(@"%@-",[responseObject class]);
        
        //UIImage *image = [UIImage imageWithData:responseObject];
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"請(qǐng)求失敗--%@",error);
    }];
}
-(void)httpData2
{
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    /**
     *  AFN內(nèi)部只能接受@"application/json", @"text/json", @"text/javascript"這三種默認(rèn)類型的數(shù)據(jù),需要再加一組
     */
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    [manager GET:@"http://www.baidu.com" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"%@-%@",[responseObject class],[[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding]);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"error = %@",error);
    }];
}
@end

  • AFNetworking監(jiān)聽網(wǎng)絡(luò)狀態(tài)


    AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
    
    //監(jiān)聽狀態(tài)的改變
    /*
     AFNetworkReachabilityStatusUnknown          = -1, 未知
     AFNetworkReachabilityStatusNotReachable     = 0,  沒有網(wǎng)絡(luò)
     AFNetworkReachabilityStatusReachableViaWWAN = 1,  蜂窩網(wǎng)絡(luò)
     AFNetworkReachabilityStatusReachableViaWiFi = 2   Wifi
     */
    [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        switch (status) {
            case AFNetworkReachabilityStatusReachableViaWWAN:
                NSLog(@"蜂窩網(wǎng)絡(luò)");
                break;
            case AFNetworkReachabilityStatusReachableViaWiFi:
                NSLog(@"WIFI");
                break;
            case AFNetworkReachabilityStatusNotReachable:
                NSLog(@"沒有網(wǎng)絡(luò)");
                break;
            case AFNetworkReachabilityStatusUnknown:
                NSLog(@"未知");
                break;
            default:
                break;
        }
    }];
    
    //開始監(jiān)聽
    [manager startMonitoring];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末麸锉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子同欠,更是在濱河造成了極大的恐慌,老刑警劉巖横缔,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铺遂,死亡現(xiàn)場(chǎng)離奇詭異茎刚,居然都是意外死亡襟锐,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門莫杈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人奢入,你說(shuō)我怎么就攤上這事筝闹。” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵关顷,是天一觀的道長(zhǎng)糊秆。 經(jīng)常有香客問(wèn)我,道長(zhǎng)议双,這世上最難降的妖魔是什么痘番? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮平痰,結(jié)果婚禮上汞舱,老公的妹妹穿的比我還像新娘。我一直安慰自己宗雇,他們只是感情好昂芜,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逾礁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪访惜。 梳的紋絲不亂的頭發(fā)上嘹履,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音债热,去河邊找鬼砾嫉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛窒篱,可吹牛的內(nèi)容都是我干的焕刮。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼墙杯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼配并!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起高镐,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤溉旋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后嫉髓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體观腊,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年算行,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了梧油。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡州邢,死狀恐怖儡陨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤迄委,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布褐筛,位于F島的核電站,受9級(jí)特大地震影響叙身,放射性物質(zhì)發(fā)生泄漏渔扎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一信轿、第九天 我趴在偏房一處隱蔽的房頂上張望晃痴。 院中可真熱鬧,春花似錦财忽、人聲如沸倘核。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)紧唱。三九已至,卻和暖如春隶校,著一層夾襖步出監(jiān)牢的瞬間漏益,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工深胳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绰疤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓舞终,卻偏偏與公主長(zhǎng)得像轻庆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子敛劝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理余爆,服務(wù)發(fā)現(xiàn),斷路器夸盟,智...
    卡卡羅2017閱讀 134,628評(píng)論 18 139
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)龙屉、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,059評(píng)論 4 62
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,743評(píng)論 25 707
  • 通過(guò)memory overwrite 直接把倉(cāng)位修改成了頭等艙满俗。 未必連續(xù)转捕,也許有padding。假設(shè)連續(xù)唆垃,我們?nèi)?..
    98Future閱讀 351評(píng)論 0 0
  • 九宮格真的是超麻五芝,辣到失聰,還想吃 大后天晚上考試辕万,還沒咋看過(guò)枢步,論文也是緊迫的不得了沉删。 干巴爹
    生活記事錄閱讀 113評(píng)論 0 0