Swift 的 HTTP 开发包:SwiftHTTP
jopen
10年前
SwiftHTTP是 Swift 语言中 NSURLSession的简单封装了 ,简化了 HTTP 请求操作。
Example
GET
The most basic request. By default an NSData object will be returned for the response.
var request = HTTPTask() request.GET("http://vluxe.io", parameters: nil, success: {(response: HTTPResponse) -> Void in if response.responseObject != nil { let data = response.responseObject as NSData let str = NSString(data: data, encoding: NSUTF8StringEncoding) println("response: \(str)") //prints the HTML of the page } },failure: {(error: NSError) -> Void in println("error: \(error)") })
We can also add parameters as with standard container objects and they will be properly serialized to their respective HTTP equivalent.
var request = HTTPTask() request.GET("http://google.com", parameters: ["param": "param1", "array": ["first array element","second","third"], "num": 23], success: {(response: HTTPResponse) -> Void in println("response: \(response.responseObject!)") },failure: {(error: NSError) -> Void in println("error: \(error)") })
The HTTPResponse
contains all the common HTTP response data, such as the responseObject of the data and the headers of the response.
POST
A POST request is just as easy as a GET.
var request = HTTPTask() request.POST("http://domain.com/create", parameters: ["param": "hi", "something": "else", "key": "value"], success: {(response: HTTPResponse) -> Void in },failure: {(error: NSError) -> Void in })
PUT
PUT works the same as post. The example also include a file upload to do a multi form request.
let fileUrl = NSURL.fileURLWithPath("/Users/dalton/Desktop/file") var request = HTTPTask() request.PUT("http://domain.com/1", parameters: ["param": "hi", "something": "else", "key": "value","file": HTTPUpload(fileUrl: fileUrl)], success: {(response: HTTPResponse) -> Void in },failure: {(error: NSError) -> Void in })
The HTTPUpload object is use to represent files on disk or in memory file as data.
DELETE
DELETE works the same as the GET.
var request = HTTPTask() request.DELETE("http://domain.com/1", parameters: nil, success: {(response: HTTPResponse) -> Void in println("DELETE was successful!") },failure: {(error: NSError) -> Void in println("print the error: \(error)") })
HEAD
HEAD works the same as the GET.
var request = HTTPTask() request.HEAD("http://domain.com/image.png", parameters: nil, success: {(response: HTTPResponse) -> Void in println("The file does exist!") },failure: {(error: NSError) -> Void in println("File not found: \(error)") })