AFNetworking

http網(wǎng)絡(luò)庫是集XML解析,Json解析撼班,網(wǎng)絡(luò)圖片下載歧匈,plist解析,數(shù)據(jù)流請(qǐng)求操作砰嘁,上傳件炉,下載,緩存等網(wǎng)絡(luò)眾多功能于一身的強(qiáng)大的類庫矮湘。最新版本支持session斟冕,xctool單元測(cè)試。網(wǎng)絡(luò)獲取數(shù)據(jù)一直是手機(jī)軟件的重中之重缅阳,如果處理的不好磕蛇,會(huì)造成很差的用戶體驗(yàn)。隨著ASIHTTPRequest的停止更新,更換網(wǎng)絡(luò)庫是必然的事情秀撇,AFNetworking就是很好的替代品超棺。而且都是輕量級(jí),不要擔(dān)心加入太多庫會(huì)多軟件性能有影響呵燕。

1.為什么用第三方網(wǎng)絡(luò)庫棠绘?先說如果不用網(wǎng)絡(luò)庫,我曾有一次覺得什么都用蘋果原生的好再扭,XML解析用蘋果自帶的委托氧苍,下載圖片自己寫,如果你也有跟我一樣的經(jīng)歷泛范,那你會(huì)發(fā)現(xiàn)自己管理起來很復(fù)雜让虐,很容易出錯(cuò)。而且性能不好敦跌。如果你是一個(gè)追求完美的人澄干,那就放下你的固執(zhí)逛揩,就如當(dāng)初的我一樣柠傍,嘗試一下網(wǎng)絡(luò)庫吧。

2.為什么要用AFNetworking?第一點(diǎn)辩稽,它有人更新和維護(hù)惧笛,而且目前使用者很多,第二點(diǎn)逞泄,還是使用者很多患整,那么他的資料,文檔喷众,demo就多各谚,很好找遇到問題好解決。如果不用AFNetworking到千,還有一種MKNetworkKit也不錯(cuò)昌渤,不妨一試。

***

## 如何通過URL獲取json數(shù)據(jù)

第一種憔四,利用AFJSONRequestOperation膀息,官方網(wǎng)站上給的例子:

```js

NSString*str=[NSStringstringWithFormat:@"https://alpha-api.app.net/stream/0/posts/stream/global"];

NSURL*url = [NSURL URLWithString:[strstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

NSURLRequest*request = [NSURLRequest requestWithURL:url];

//從URL獲取json數(shù)據(jù)

AFJSONRequestOperation*operation1 = [AFJSONRequestOperation JSONRequestOperationWithRequest:requestsuccess:^(NSURLRequest*request,NSHTTPURLResponse*response,NSDictionary* JSON) {

NSLog(@"獲取到的數(shù)據(jù)為:%@",JSON);

}failure:^(NSURLRequest*request,NSHTTPURLResponse*response,NSError*error,iddata) {

NSLog(@"發(fā)生錯(cuò)誤!%@",error);

}];

[operation1start];

```

***

第二種方法了赵,利用AFHTTPRequestOperation 先獲取到字符串形式的數(shù)據(jù)潜支,然后轉(zhuǎn)換成json格式,將NSString格式的數(shù)據(jù)轉(zhuǎn)換成json數(shù)據(jù)柿汛,利用IOS5自帶的json解析方法:

```js

NSString *str=[NSString stringWithFormat:@"https://alpha-api.app.net/stream/0/posts/stream/global"];

NSURL *url = [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

NSURLRequest *request = [NSURLRequest requestWithURL:url];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

NSString *html = operation.responseString;

NSData* data=[html dataUsingEncoding:NSUTF8StringEncoding];

id dict=[NSJSONSerialization? JSONObjectWithData:data options:0 error:nil];

NSLog(@"獲取到的數(shù)據(jù)為:%@",dict);

}failure:^(AFHTTPRequestOperation *operation, NSError *error) {

NSLog(@"發(fā)生錯(cuò)誤冗酿!%@",error);

}];

NSOperationQueue *queue = [[NSOperationQueue alloc] init];

[queue addOperation:operation];

```

如果發(fā)生Error Domain=NSURLErrorDomain Code=-1000 "bad URL" UserInfo=0x14defc80 {NSUnderlyingError=0x14deea10 "bad URL", NSLocalizedDescription=bad URL這個(gè)錯(cuò)誤,請(qǐng)檢查URL編碼格式。有沒有進(jìn)行`stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding`

***

## 如何通過URL獲取圖片

異步獲取圖片裁替,通過隊(duì)列實(shí)現(xiàn)鸠窗,而且圖片會(huì)有緩存,在下次請(qǐng)求相同的鏈接時(shí)胯究,系統(tǒng)會(huì)自動(dòng)調(diào)用緩存稍计,而不從網(wǎng)上請(qǐng)求數(shù)據(jù)。

```js

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 100.0f, 100.0f, 100.0f)];

[imageView setImageWithURL:[NSURL URLWithString:@"http://i./r4uwx.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder-avatar"]];

[self.view addSubview:imageView];

上面的方法是官方提供的裕循,還有一種方法臣嚣,

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.scott-sherwood.com/wp-content/uploads/2013/01/scene.png"]];

AFImageRequestOperation *operation = [AFImageRequestOperation imageRequestOperationWithRequest:request imageProcessingBlock:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {

self.backgroundImageView.image = image;

} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {

NSLog(@"Error %@",error);

}];

[operation start];

```

如果使用第一種URLWithString:? placeholderImage:會(huì)有更多的細(xì)節(jié)處理,其實(shí)實(shí)現(xiàn)還是通過AFImageRequestOperation處理剥哑,可以點(diǎn)擊URLWithString:? placeholderImage:方法進(jìn)去看一下就一目了然了硅则。所以我覺得還是用第一種好。

***

## 如何通過URL獲取plist文件

```js

通過url獲取plist文件的內(nèi)容株婴,用的很少怎虫,這個(gè)方法在官方提供的方法里面沒有

NSString *weatherUrl = @"http://www.calinks.com.cn/buick/kls/Buickhousekeeper.plist";

NSURL *url = [NSURL URLWithString:[weatherUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

NSURLRequest *request = [NSURLRequest requestWithURL:url];

[AFPropertyListRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"text/plain"]];

AFPropertyListRequestOperation *operation = [AFPropertyListRequestOperation propertyListRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id propertyList) {

NSLog(@"%@",(NSDictionary *)propertyList);

}failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id propertyList) {

NSLog(@"%@",error);

}];

[operation start];

如果稍不留神,可能就出現(xiàn)Error Domain=AFNetworkingErrorDomain Code=-1016 "Expected content type {(

"application/x-plist"

)}, got text/plain" UserInfo=0x16e91ce0 {NSLocalizedRecoverySuggestion=

...

...

, AFNetworkingOperationFailingURLRequestErrorKey= { }, NSErrorFailingURLKey=, NSLocalizedDescription=Expected content type {(

"application/x-plist"

)}, got text/plain, AFNetworkingOperationFailinponseErrorKey= { URL:? } { status code: 200, headers {

"Accept-Ranges" = bytes;

Connection = "keep-alive";

"Content-Length" = 974;

"Content-Type" = "text/plain";

Date = "Sat, 25 Jan 2014 07:29:26 GMT";

Etag = ""1014c2-3ce-4ee63e1c80e00"";

"Last-Modified" = "Wed, 25 Dec 2013 23:04:24 GMT";

Server = "nginx/1.4.2";

} }}

```

可能還會(huì)出現(xiàn)亂碼困介,解決辦法就是[AFPropertyListRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"text/plain"]];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末大审,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子座哩,更是在濱河造成了極大的恐慌徒扶,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件根穷,死亡現(xiàn)場(chǎng)離奇詭異姜骡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)屿良,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門圈澈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人尘惧,你說我怎么就攤上這事康栈。” “怎么了褥伴?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵谅将,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我重慢,道長(zhǎng)饥臂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任似踱,我火速辦了婚禮隅熙,結(jié)果婚禮上稽煤,老公的妹妹穿的比我還像新娘。我一直安慰自己囚戚,他們只是感情好酵熙,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著驰坊,像睡著了一般匾二。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拳芙,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天察藐,我揣著相機(jī)與錄音,去河邊找鬼舟扎。 笑死分飞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的睹限。 我是一名探鬼主播譬猫,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼羡疗!你這毒婦竟也來了染服?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤顺囊,失蹤者是張志新(化名)和其女友劉穎肌索,沒想到半個(gè)月后蕉拢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體特碳,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年晕换,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了午乓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡闸准,死狀恐怖益愈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情夷家,我是刑警寧澤蒸其,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站库快,受9級(jí)特大地震影響摸袁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜义屏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一靠汁、第九天 我趴在偏房一處隱蔽的房頂上張望蜂大。 院中可真熱鬧,春花似錦蝶怔、人聲如沸奶浦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽澳叉。三九已至,卻和暖如春沐悦,著一層夾襖步出監(jiān)牢的瞬間耳高,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國打工所踊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留泌枪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓秕岛,卻偏偏與公主長(zhǎng)得像碌燕,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子继薛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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

  • 這是一篇團(tuán)隊(duì)的成員之一斯科特·舍伍德所寫的教程,它是專門從事混合定位解決方案的動(dòng)態(tài)加載的定位軟件公司修壕。 網(wǎng)絡(luò)——你...
    隨風(fēng)飄蕩的小逗逼閱讀 2,111評(píng)論 1 1
  • AFNetwork是一個(gè)輕量級(jí)的網(wǎng)絡(luò)請(qǐng)求api類庫。是以NSURLConnection, NSOperation和...
    MissLu16閱讀 808評(píng)論 0 3
  • 原文鏈接:AFNetworking速成教程 本文是由 iOS Tutorial小組成員ScottSherwood撰...
    默默_David閱讀 2,404評(píng)論 0 4
  • 現(xiàn)在大家都喜歡用AFNetworking遏考,因?yàn)橛腥司S護(hù)慈鸠。看來一下官方文檔灌具,把使用的代碼簡(jiǎn)單羅列一下: 首先通過Co...
    隔壁班小明閱讀 809評(píng)論 0 0
  • 前幾天群里青团,A突然說出了這么一句話,突然發(fā)現(xiàn)努力賺錢真的很重要咖楣。于是就有了一次關(guān)于“錢多了就會(huì)不快樂”的討論督笆。 群...
    dc6bb3f5466a閱讀 540評(píng)論 0 0