Swift中的HTTP請求

來源:互聯網
上載者:User

標籤:

iOS開發中大部分App的網路資料交換是基於 HTTP協議的。本文將簡單介紹在Swift中使用HTTP進行網路請求的幾種方法。
注意:網路請求完成後會獲得一個NSData類型的返回資料,如果資料格式為JSON,那麼可以使用系統內建的NSJSONSerialization類來解析資料;或者使用SwiftyJSON庫的使用和思考一文中提到的JSON解析庫來解析資料。
1. 使用 NSURLConnection

下面例子使用NSURLConnection實現了一個簡單的非同步GET操作:

func requestUrl(urlString: String){        var url: NSURL = NSURL(string: urlString)        let request: NSURLRequest = NSURLRequest(URL: url)        NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler:{            (response, data, error) -> Void in                if error? {                    //Handle Error here                }else{                    //Handle data in NSData type                }            })    }
2. 使用YYHRequest-Swift庫

這個庫通過封裝NSURLConnectionNSOperationQueue實現了簡單的HTTP GET/POST/PUT/DELETE操作:

let request = YYHRequest(url: NSURL(string: "http://www.google.com/"))request.loadWithCompletion { response, data, error in    // request complete!}
3. 使用SwiftHTTP庫。

這個庫通過封裝NSURLSession,提供了GET/POST/PUT/DELETE以及上傳和下載的支援,比較全面:

var request = HTTPTask()request.GET("http://vluxe.io", parameters: nil, success: {(response: AnyObject?) -> Void in    },failure: {(error: NSError) -> Void in    })
4. 使用Objective-C中的AFNetworking網路程式庫

AFNetworking庫是在iOS開發領域享有盛名、功能強大的網路請求庫。

  • 首先將AFNetworking庫引入工程,請參考這篇教程
  • 然後在<ProjectName>-Bridging-Header.h標頭檔中引入AFNetworking:
    #import “AFNetworking/AFNetworking.h”

    下面簡單展示了AFNetworkingGET的用法:

    func requestUrl(urlString: String) {        let manager = AFHTTPRequestOperationManager()        let params = ["a":1, "b":2]        manager.GET(urlString,            parameters: params,            success: { (operation: AFHTTPRequestOperation!,                responseObject: AnyObject!) in                let responseDict = responseObject as NSDictionary!            },            failure: { (operation: AFHTTPRequestOperation!,                error: NSError!) in                //Handle Error            })    }
    執行個體

    最後,我寫了一個簡單的例子來通過調用金山詞霸的API擷取單詞swift的解釋。項目使用SwiftHTTP來作網路請求,使用SwiftyJSON來解析JSON資料,代碼託管在Github,核心代碼如下:

    //請求金山詞霸API擷取單詞`swift`的解釋        var request = HTTPTask()        var params: Dictionary<String, AnyObject> = ["w": "swift", "key": "30CBA9DDD34B16DB669A9B214C941F14", "type": "json"]        request.GET("http://dict-co.iciba.com/api/dictionary.php", parameters: params, success: {(response: AnyObject?) -> Void in                let json = JSONValue(response!)                println("\(json)")            },failure: {(error: NSError) -> Void in                println("\(error)")            })

    from:http://swiftist.org/topics/135

Swift中的HTTP請求

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.