一个极其简单的 Swift HTTP 客户端库。
// GET - Basic request.
http.get("http://www.google.com") { resp in
println("response: \(resp.string)")
}
// GET - Adding parameters to the request.
http.get("http://www.google.com").params(["q": "swift lang"]) { resp in
println("response: \(resp.string)")
}
// GET - JSON response.
http.get("https://ajax.googleapis.ac.cn/ajax/services/search/web").params(["q": "Emily Dickinson", "v": "1.0"]) { resp in
println("JSON: \(resp.json)")
}
// GET - Binary data response. NSData or [UInt8].
http.get("https://www.google.com/images/logo.png") { resp in
println("[UInt8]: \(resp.data.length) bytes")
println("NSData: \(count(resp.bytes)) bytes")
}
// POST - Using the `params` method will serialize the input as form data.
http.post("https://api.twitter.com/1.1/statuses/update.json").params(["status": "Or else a peacock’s purple train"]) { resp in
println("response: \(resp.string)")
}
// POST - Posting JSON.
http.post("https://api.twitter.com/1.1/statuses/update.json").body(["status": "Or else a peacock’s purple train"]) { resp in
println("response: \(resp.string)")
}
// POST - Posting a string.
http.post("http://domain.com").body("plain text sent to server") { resp in
println("response: \(resp.string)")
}
// POST - Posting binary. This can be a [UInt8], NSData, or NSInputStream
var data : [UInt8] = [/* some good data */]
http.post("http://domain.com").body(data) { resp in
println("response: \(resp.string)")
}
// Custom Headers
var imageData = NSData() // pretend we have some jpeg data
http.post("http://domain.com").header(["Content-Type": "image/jpeg"]).body(imageData) { resp in
println("response: \(resp.string)")
}
// Cancelling
var req = http.get("http://google.com") { resp in
println("response: \(resp.string)")
}
req.cancel()
// Error Handling
var req = http.get("badscheme://google.com") { resp in
if resp.error != nil {
println("Connection error: \(resp.error!)")
return
}
println("response: \(resp.string)")
}
将 SnapHTTP\http.swift
文件复制到您的项目中。
手动安装时无需导入 import SnapHTTP
。
Josh Baker @tidwall
SnapHTTP 源代码可在 MIT 许可证下获取。