Swift Alamofire

最近AFNetworking的作者M(jìn)att Thompson 提出了一個新的類似AFNetworking的網(wǎng)絡(luò)基礎(chǔ)庫归形,并且專門使用最新的Swift語言寫的,名為 Alamofire.

一、正常導(dǎo)入,CocoaPods

1-1氓栈、注意下CocoaPods版本

gem install cocoapods

CocoaPods 0.39.0+ is required to build Alamofire 3.0.0+.

1-2、vim Podfile

  platform :ios, '8.0'
  use_frameworks!
  pod 'Alamofire' 
  //然后 pod install 就OK了 

1-3、導(dǎo)入Alamfire 就可以正常使用了

  import Alamofire 

注意目前可能會出現(xiàn)這個警告;Cannot load underlying module for 'Alamofire'锤悄,可以先忽略它,直接 build就沒了

二嘉抒、基本使用

GET請求

普通的get請求

 下面是一個天氣預(yù)報的請求零聚,時間久了,key 會失效
  let parameters:Dictionary = ["key":"93c921ea8b0348af8e8e7a6a273c41bd"]
    Alamofire.request(.GET, "http://apis.haoservice.com/weather/city", parameters: parameters)
        .responseJSON { response in

            print("result==\(response.result)")   // 返回結(jié)果些侍,是否成功
            if let jsonValue = response.result.value {
                /*
                error_code = 0
                reason = ""
                result = 數(shù)組套字典的城市列表
                */
                print("code: \(jsonValue["error_code"])")
            }
    }
     /*
    result==SUCCESS
    code: Optional(0)
    */

帶head的get請求

 let headers = ["apikey":"a566eb03378211f7dc9ff15ca78c2d93"]
 Alamofire.request(.GET, "http://apis.baidu.com/heweather/pro/weather?city=beijing", headers: headers)
        .responseJSON { response in
            print("result==\(response.result)")
            if let jsonValue = response.result.value {
                
                print("weNeedReuslt ==  \(jsonValue)")
            }
  
   }
POST 請求

先看看Alamofire 定義了許多其他的HTTP 方法(HTTP Medthods)可以使用握牧。

public enum Method: String {
case OPTIONS, GET, HEAD, POST, PUT, PATCH, DELETE, TRACE, CONNECT
}

使用GET類型請求的時候,參數(shù)會自動拼接在url后面娩梨,使用POST類型請求的時候,參數(shù)是放在在HTTP body里傳遞览徒,url上看不到的

let parameters:Dictionary = ["key":"93c921ea8b0348af8e8e7a6a273c41bd"]
Alamofire.request(.POST, "http://apis.haoservice.com/weather/city", parameters: parameters)
        .responseJSON { response in
            
            print("result==\(response.result)")   // 返回結(jié)果狈定,是否成功
            if let jsonValue = response.result.value {
                /*
                error_code = 0
                reason = ""
                result = 數(shù)組套字典的城市列表
                */
                print("code: \(jsonValue)")
            }
 }

至于加header的post 請求,實際上也是GET 一樣的

注意點1: 參數(shù)編碼方式

除了默認(rèn)的方式外习蓬,Alamofire還支持URL纽什、URLEncodedInURL、JSON躲叼、Property List以及自定義格式方式編碼參數(shù)芦缰。

public enum ParameterEncoding {
      case URL
      case URLEncodedInURL
      case JSON
      case PropertyList(NSPropertyListFormat, NSPropertyListWriteOptions)
      case Custom((URLRequestConvertible, [String: AnyObject]?) -> (NSMutableURLRequest, NSError?))
}

//想要把一個字典類型的數(shù)據(jù),使用json格式發(fā)起POST請求

 let parameters = [
        "one": [1,2,3],
        "two": ["apple": "pig"]
    ]
    
 Alamofire.request(.POST, "http://www.example.com/service", parameters: parameters, encoding: .JSON)
注意點2:validate()

將其與請求和響應(yīng)鏈接枫慷,以確認(rèn)響應(yīng)的狀態(tài)碼在默認(rèn)可接受的范圍(200到299)內(nèi)让蕾。如果認(rèn)證失敗,響應(yīng)處理方法將出現(xiàn)一個相關(guān)錯誤或听,我們可以根據(jù)不同在完成處理方法中處理這個錯誤探孝。比如下面的樣例,成功時會打印成功信息誉裆,失敗時輸出具體錯誤信息顿颅。

  Alamofire.request(.GET, "http://apis.haoservice.com/weather/city", parameters: ["apikey":"a566eb03378211f7dc9ff15ca78c2d93"])
        .validate()
        .responseJSON { response in
            switch response.result {
            case .Success:
                print("數(shù)據(jù)獲取成功!")
            case .Failure(let error):
                print(error)
            }
    }
注意點3:響應(yīng)處理方法

觀察上面幾個請求,我都是使用樣例的responseJSON(處理json類型的返回結(jié)果)外足丢,Alamofire還提供了許多其他類型的響應(yīng)處理方法:

response()
responseData()
responseString(encoding: NSStringEncoding)
responseJSON(options: NSJSONReadingOptions)
responsePropertyList(options: NSPropertyListReadOptions)

我們可以根據(jù)我的實際情況粱腻,選擇自己需要的。

例如 responseData()
 Alamofire.request(.GET, "http://apis.haoservice.com/weather/city", parameters: ["apikey":"a566eb03378211f7dc9ff15ca78c2d93"])
        .responseData { response in
            print(response.request)
            print(response.response)
            print(response.result)
    }

暫時基本使用斩跌,總結(jié)到此绍些,持續(xù)更新中····??

備注參考

https://github.com/Alamofire/Alamofire
http://www.hangge.com/blog/cache/detail_970.html
http://www.cnblogs.com/iCocos/p/4550570.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市耀鸦,隨后出現(xiàn)的幾起案子遇革,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件萝快,死亡現(xiàn)場離奇詭異锻霎,居然都是意外死亡,警方通過查閱死者的電腦和手機揪漩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門旋恼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奄容,你說我怎么就攤上這事冰更。” “怎么了昂勒?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵蜀细,是天一觀的道長。 經(jīng)常有香客問我戈盈,道長奠衔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任塘娶,我火速辦了婚禮归斤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘刁岸。我一直安慰自己脏里,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布虹曙。 她就那樣靜靜地躺著迫横,像睡著了一般。 火紅的嫁衣襯著肌膚如雪酝碳。 梳的紋絲不亂的頭發(fā)上员淫,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音击敌,去河邊找鬼介返。 笑死,一個胖子當(dāng)著我的面吹牛沃斤,可吹牛的內(nèi)容都是我干的圣蝎。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼衡瓶,長吁一口氣:“原來是場噩夢啊……” “哼徘公!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起哮针,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤关面,失蹤者是張志新(化名)和其女友劉穎坦袍,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體等太,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡捂齐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了缩抡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奠宜。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瞻想,靈堂內(nèi)的尸體忽然破棺而出压真,到底是詐尸還是另有隱情,我是刑警寧澤蘑险,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布滴肿,位于F島的核電站,受9級特大地震影響佃迄,放射性物質(zhì)發(fā)生泄漏泼差。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一和屎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧春瞬,春花似錦柴信、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至萄涯,卻和暖如春绪氛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涝影。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工枣察, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人燃逻。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓序目,卻偏偏與公主長得像,于是被迫代替她去往敵國和親伯襟。 傳聞我的和親對象是個殘疾皇子猿涨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

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