AFNetworking 詳解 以及 通過 POST 方式上傳數(shù)據(jù)

POST 發(fā)送數(shù)據(jù)有兩種形式:
1、發(fā)送純文本的內(nèi)容
2取胎、發(fā)送的 body 部分帶有文件(圖片展哭,音頻或者其他二進(jìn)制數(shù)據(jù))

對應(yīng)的 Content-Type 有兩種:
1湃窍、application/x-www-form-urlencoded
2、multipart/form-data

傳統(tǒng)的使用 POST 的方式發(fā)送數(shù)據(jù)用于上傳文件匪傍,AFNetworking 中提供了直接的接口:

 [self.manager POST:post_url parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
          // 直接以 key value 的形式向 formData 中追加二進(jìn)制數(shù)據(jù)
          [formData appendPartWithFormData:[str dataUsingEncoding:NSUTF8StringEncoding] 
          name:@"key1"];
          [formData appendPartWithFileData:imgData name:@"imagefile" fileName:@"img.jpg" mimeType:@"image/jpeg"];
 }success:^(AFHTTPRequestOperation *operation, id responseObject) {
          // 成功后的處理
 }failure:^(AFHTTPRequestOperation *operation, NSError *error) {
          // 失敗后的處理
 }];

使用 POST 方式發(fā)送純文本內(nèi)容:

 - (NSMutableURLRequest *)postRequestWithURL:(NSString *)url content:(NSString *)text
{
      NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
      [request setHTTPMethod:@"POST"];
      [request setValue:@"application/x-www-form-urlencoded"forHTTPHeaderField:@"Contsetent-Type"];
      [request setHTTPBody:1];

  return request;
}

     NSOperation *operation =[self.manager HTTPRequestOperationWithRequest:request      
       success:^(AFHTTPRequestOperation *operation, id responseObject) {
     // 成功后的處理
     }failure:^(AFHTTPRequestOperation *operation, NSError *error) {
     // 失敗后的處理
     }];

     [self.manager.operationQueue addOperation:operation];
     其中 self.manager 為 AFHTTPRequestOperationManager 實(shí)例您市。
     _manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:url];

     // 對于網(wǎng)站成功返回 JSON 格式的數(shù)據(jù)但是卻在 failure 回調(diào)中顯示的,
     // 是因?yàn)榉?wù)器返回?cái)?shù)據(jù)的網(wǎng)頁中 content type 沒有設(shè)置為 text/json
     // 對于我們公司的服務(wù)器返回的 content type 為 text/html 所以我設(shè)置為如下這樣役衡,
     // 對于不同的情況可以根據(jù)自己的情況設(shè)置合適的接受的 content type 的類型
       _manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];

AFN
一茵休、什么是AFN
全稱是AFNetworking,是對NSURLConnection的一層封裝
雖然運(yùn)行效率沒有ASI高手蝎,但是使用比ASI簡單
在iOS開發(fā)中榕莺,使用比較廣泛

AFN的github地址
https://github.com/pokeb/AFNetworking/AFNetworking

二、AFN結(jié)構(gòu)
NSURLConnection
AFURLConnectionOperation
AFHTTPRequestOperation
AFHTTPRequestOperationManager(封裝了常用的 HTTP 方法)
屬性
baseURL :AFN建議開發(fā)者針對 AFHTTPRequestOperationManager 自定義個(gè)一個(gè)單例子類棵介,設(shè)置 baseURL, 所有的網(wǎng)絡(luò)訪問帽撑,都只使用相對路徑即可
requestSerializer :請求數(shù)據(jù)格式/默認(rèn)是二進(jìn)制的 HTTP
responseSerializer :響應(yīng)的數(shù)據(jù)格式/默認(rèn)是 JSON 格式
operationQueue
reachabilityManager :網(wǎng)絡(luò)連接管理器

方法
manager :方便創(chuàng)建管理器的類方法
HTTPRequestOperationWithRequest :在訪問服務(wù)器時(shí),如果要告訴服務(wù)器一些附加信息鞍时,都需要在 Request 中設(shè)置
GET
POST

NSURLSession
AFURLSessionManager
AFHTTPSessionManager(封裝了常用的 HTTP 方法)
GET
POST
UIKit + AFNetworking 分類
NSProgress :利用KVO

半自動(dòng)的序列化&反序列化的功能
AFURLRequestSerialization :請求的數(shù)據(jù)格式/默認(rèn)是二進(jìn)制的
AFURLResponseSerialization :響應(yīng)的數(shù)據(jù)格式/默認(rèn)是JSON格式

附加功能
安全策略
HTTPS
AFSecurityPolicy

網(wǎng)絡(luò)檢測
對蘋果的網(wǎng)絡(luò)連接檢測做了一個(gè)封裝
AFNetworkReachabilityManager

三、AFN基本使用
1.AFHTTPSessionManager
是AFN中最重要的對象之一
封裝了HTTP請求的常見處理
GET\POST請求
解析服務(wù)器的響應(yīng)數(shù)據(jù)

創(chuàng)建AFHTTPSessionManager
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];

AFHTTPSessionManager的GET\POST請求

![ ![ ![ ![ ![ ![ ![ ![ ![ ![ ![ ![Uploading 2323089-ffd30fab43c4efd0_116702.jpg . . .] ](http://upload-images.jianshu.io/upload_images/2323089-d4f71795d382389c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ](http://upload-images.jianshu.io/upload_images/2323089-7ec0c11234613a24.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ](http://upload-images.jianshu.io/upload_images/2323089-da952913a1bc9209.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ](http://upload-images.jianshu.io/upload_images/2323089-fcf12d1f0df27e18.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ](http://upload-images.jianshu.io/upload_images/2323089-ee8da9f3b9fcb315.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ](http://upload-images.jianshu.io/upload_images/2323089-a78b8ffce05427ab.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ](http://upload-images.jianshu.io/upload_images/2323089-319693e390bfadb6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ](http://upload-images.jianshu.io/upload_images/2323089-dda4cc06d9ca8564.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ](http://upload-images.jianshu.io/upload_images/2323089-5085a6983baed619.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ](http://upload-images.jianshu.io/upload_images/2323089-2214a869f38f09e5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ](http://upload-images.jianshu.io/upload_images/2323089-0cc1eadd7ee293cb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扣蜻,一起剝皮案震驚了整個(gè)濱河市逆巍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌莽使,老刑警劉巖锐极,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異芳肌,居然都是意外死亡灵再,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門亿笤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翎迁,“玉大人,你說我怎么就攤上這事净薛⊥衾疲” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵子库,是天一觀的道長唬血。 經(jīng)常有香客問我躺同,道長,這世上最難降的妖魔是什么士聪? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮猛蔽,結(jié)果婚禮上剥悟,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好懦胞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布替久。 她就那樣靜靜地躺著,像睡著了一般躏尉。 火紅的嫁衣襯著肌膚如雪蚯根。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天胀糜,我揣著相機(jī)與錄音颅拦,去河邊找鬼。 笑死教藻,一個(gè)胖子當(dāng)著我的面吹牛距帅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播括堤,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼碌秸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了悄窃?” 一聲冷哼從身側(cè)響起讥电,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎轧抗,沒想到半個(gè)月后恩敌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡横媚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年纠炮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灯蝴。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恢口,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出穷躁,到底是詐尸還是另有隱情弧蝇,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布折砸,位于F島的核電站看疗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏睦授。R本人自食惡果不足惜两芳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望去枷。 院中可真熱鬧怖辆,春花似錦是复、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至特咆,卻和暖如春季惩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背腻格。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工画拾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人菜职。 一個(gè)月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓青抛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親酬核。 傳聞我的和親對象是個(gè)殘疾皇子蜜另,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

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

  • AFN什么是AFN全稱是AFNetworking,是對NSURLConnection嫡意、NSURLSession的一...
    醉葉惜秋閱讀 1,199評論 0 0
  • AFN什么是AFN全稱是AFNetworking举瑰,是對NSURLConnection、NSURLSession的一...
    JonesCxy閱讀 1,219評論 0 5
  • 網(wǎng)絡(luò)解析:AFNnetworking詳解 一鹅很、什么事AFN□在iOS開發(fā)中,使用比較廣泛□全稱是AFNetwork...
    Bo_cake閱讀 869評論 0 1
  • 13.服務(wù)器圖片改了罪帖,url沒有變促煮,需求,服務(wù)器的圖片變了整袁,就從服務(wù)器加載圖片菠齿,如果服務(wù)器的沒變,就從本地加載 1...
    AlanGe閱讀 1,149評論 0 1
  • 全稱是AFNetworking坐昙,是對NSURLSession的一層封裝 雖然運(yùn)行效率沒有ASI高绳匀,但是使用比ASI...
    翻這個(gè)墻閱讀 1,038評論 7 4