你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS7技巧 >> Swift HTTP網絡操作庫Alamofire使用詳解1(配置,以及數據請求)

Swift HTTP網絡操作庫Alamofire使用詳解1(配置,以及數據請求)

編輯:IOS7技巧
本文章來為各位介紹一篇關於Swift HTTP網絡操作庫Alamofire使用詳解1(配置,以及數據請求)實例,希望對各位有幫助. 一,Alamofire的說明與配置

 

 

1,什麼是Alamofire

(1)Alamofire 的前身是 AFNetworking。AFNetworking 是 iOS 和 OS X 上很受歡迎的第三方HTTP網絡基礎庫。
(2)其實 AFNetwork 的前綴 AF 便是 Alamofire 的縮寫。
(3)Swift發布後,AFNetworking的作者又用Swift語言寫了個相同功能的庫,這便是 Alamofire。
(4)Alamofire 本質是基於`NSURLSession`,並做了封裝。使用 Alamofire 可以讓我們網絡請求相關代碼(如獲取數據,提交數據,上傳文件,下載文件等)更加簡潔易用。 

 

 

 

2,Alamofire的功能特性:

 

(1)鏈式的請求/響應方法

 

(2)URL / JSON / plist參數編碼

 

(3)上傳類型支持:文件(File )、數據(Data )、流(Stream)以及MultipartFormData

 

(4)支持文件下載,下載支持斷點續傳

 

(5)支持使用NSURLCredential進行身份驗證

 

(6)HTTP響應驗證

 

(7)TLS Certificate and Public Key Pinning

 

(8)Progress Closure & NSProgress


3,Alamofire的安裝與配置
(1)從 GitHub 上下載最新的代碼:https://github.com/Alamofire/Alamofire

(2)將下載下來的源碼包中 Alamofire.xcodeproj 拖拽至你的工程中

 


原文:Swift - HTTP網絡操作庫Alamofire使用詳解1(配置,以及數據請求)

 

(3)工程 -> General -> Embedded Binaries項,增加 Alamofire.framework

 


原文:Swift - HTTP網絡操作庫Alamofire使用詳解1(配置,以及數據請求)

 

(4)最後,在需要使用 Alamofire 的地方 import 進來就可以了


import Alamofire

二,使用Alamofire進行數據請求


1,以GET請求為例

(1)不帶參數,不帶結果處理

Alamofire.request(.GET, "https://httpbin.org/get")

(2)帶參數,不帶結果處理

Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"])

(3)帶參數,也帶結果處理(這裡以返回結果為json格式的為例)


Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"])
         .responseJSON { response in
             print(response.request)  // original URL request
             print(response.response) // URL response
             print(response.data)     // server data
             print(response.result)   // result of response serialization
 
             if let JSON = response.result.value {
                 print("JSON: \(JSON)")
             }
         }

2,響應處理(Response Handling)
(1)除了上面樣例使用的responseJSON(處理json類型的返回結果)外,Alamofire還提供了許多其他類型的響應處理方法:
response()
responseData()
responseString(encoding: NSStringEncoding)
responseJSON(options: NSJSONReadingOptions)
responsePropertyList(options: NSPropertyListReadOptions)

(2)Response Handler


Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"])
         .response { request, response, data, error in
             print(request)
             print(response)
             print(data)
             print(error)
          }
(3)Response Data Handler


Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"])
         .responseData { response in
             print(response.request)
             print(response.response)
             print(response.result)
          }
(4)Response String Handler


Alamofire.request(.GET, "https://httpbin.org/get")
         .responseString { response in
             print("Success: \(response.result.isSuccess)")
             print("Response String: \(response.result.value)")
         }
(5)Response JSON Handler


Alamofire.request(.GET, "https://httpbin.org/get")
         .responseJSON { response in
             debugPrint(response)
         }
(6)同樣也支持鏈式的返回結果處理


Alamofire.request(.GET, "https://httpbin.org/get")
         .responseString { response in
             print("Response String: \(response.result.value)")
         }
         .responseJSON { response in
             print("Response JSON: \(response.result.value)")
         }
3,請求類型(HTTP Methods)
除了上面使用的 .Get 類型。Alamofire還定義了許多其他的HTTP 方法(HTTP Medthods)可以使用。


public enum Method: String {
    case OPTIONS, GET, HEAD, POST, PUT, PATCH, DELETE, TRACE, CONNECT
}
比如要使用 POST 請求,把 Alamofire.request 第一個參數做修改即可:
1
Alamofire.request(.POST, "http://httpbin.org/post")

4,請求參數(Parameters)
(1)使用GET類型請求的時候,參數會自動拼接在url後面


Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"])
// https://httpbin.org/get?foo=bar

(2)使用POST類型請求的時候,參數是放在在HTTP body裡傳遞,url上看不到


let parameters = [
    "foo": "bar",
    "baz": ["a", 1],
    "qux": [
        "x": 1,
        "y": 2,
        "z": 3
    ]
]
 
Alamofire.request(.POST, "https://httpbin.org/post", parameters: parameters)
// HTTP body: foo=bar&baz[]=a&baz[]=1&qux[x]=1&qux[y]=2&qux[z]=3

5,參數編碼方式(Parameter Encoding)
除了默認的方式外,Alamofire還支持URL、URLEncodedInURL、JSON、Property List以及自定義格式方式編碼參數。


enum ParameterEncoding {
    case URL
    case URLEncodedInURL
    case JSON
    case PropertyList(format: NSPropertyListFormat, options: NSPropertyListWriteOptions)
    case Custom((URLRequestConvertible, [String: AnyObject]?) -> (NSMutableURLRequest, NSError?))
 
    func encode(request: NSURLRequest, parameters: [String: AnyObject]?) -> (NSURLRequest, NSError?)
    { ... }
}

比如我們想要把一個字典類型的數據,使用json格式發起POST請求:
1


let parameters = [
    "foo": [1,2,3],
    "bar": [
        "baz": "qux"
    ]
]
 
Alamofire.request(.POST, "https://httpbin.org/post", parameters: parameters, encoding: .JSON)
// HTTP body: {"foo": [1, 2, 3], "bar": {"baz": "qux"}}

6,支持自定義Http頭信息(HTTP Headers)


let headers = [
    "Authorization": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
    "Content-Type": "application/x-www-form-urlencoded"
]
 
Alamofire.request(.GET, "https://httpbin.org/get", headers: headers)
         .responseJSON { response in
             debugPrint(response)
         }

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved