本文章来为各位介绍一篇关于Swift HTTP网络操作库SwiftHTTP使用详解1(配置,及数据请求)的例子,希望例子可以帮助到各位朋友。
一,SwiftHTTP的说明与配置
1,什么是SwiftHTTP
SwiftHTTP本质是基于`NSURLSession`,并做了封装。使用SwiftHTTP可以让我们网络请求相关代码(如获取数据,提交数据,上传文件,下载文件等)更加简洁易用。
2,SwiftHTTP的功能特性:
(1)便利的闭包API
(2)支持运行队列(NSOperationQueue)
(3)支持参数编码
(4)内置JSON请求序列化
(5)上传/下载文件带有进度
(6)代码简洁
3,SwiftHTTP的安装与配置
(1)从 GitHub 上下载最新的代码:https://github.com/daltoniam/SwiftHTTP
(2)将下载下来的源码包中 SwiftHTTP.xcodeproj 拖拽至你的工程中
(3)工程 -> General -> Embedded Binaries项,增加 SwiftHTTP.framework
(4)最后,在需要使用 SwiftHTTP 的地方 import 进来就可以了
import SwiftHTTP
二,使用SwiftHTTP进行数据请求
1,GET请求
(1)不带参数
do {
let opt = try HTTP.GET("http://111cn.net")
opt.start { response in
if let err = response.error {
print("error: \(err.localizedDescription)")
return
}
print("获取到数据: \(response.description)")
}
}catchlet error {
print("请求失败: \(error)")
}
(2)带参数
do {
//实际的url是: http://111cn.net?hello=world¶m2=1
let opt = try HTTP.GET("http://111cn.net", parameters: ["hello": "world", "param2": 1])
opt.start { response in
if let err = response.error {
print("error: \(err.localizedDescription)")
return
}
print("获取到数据: \(response.description)")
}
} catch let error {
print("请求失败: \(error)")
}
2,POST请求
let params = ["param": "param1",
"array": ["first array element","second","third"],
"num": 23,
"dict": ["someKey": "someVal"]]
do {
let opt = try HTTP.POST("http://www.111cn.net", parameters: params)
opt.start { response in
//进行具体的响应操作...
}
} catch let error {
print("请求失败: \(error)")
}
3,支持自定义Http头信息(HTTP Headers)
do {
let opt = try HTTP.GET("http://www.111cn.net", parameters: ["hello": "there"],
headers: ["header": "value"])
opt.start { response in
//进行具体的响应操作...
}
} catch let error {
print("请求失败: \(error)")
}
三,使用操作队列进行请求
SwiftHTTP同样支持运行队列(Operation Queue),我们可以把所有数据请求放到队列中就回自动进行多线程异步请求。
同时通过 maxConcurrentOperationCount 属性,可以设置同一时间最多允许多少个请求同时进行。
let operationQueue = NSOperationQueue()
operationQueue.maxConcurrentOperationCount = 2 //最大任务数
do {
let opt1 = try HTTP.New("http://www.111cn.net", method: .GET)
opt1.onFinish = { response in
//进行具体的响应操作...
}
operationQueue.addOperation(opt1)
let opt2 = try HTTP.New("http://www.baidu.com", method: .GET)
opt2.onFinish = { response in
//进行具体的响应操作...
}
operationQueue.addOperation(opt2)
let opt3 = try HTTP.New("http://www.111cn.net ", method: .GET)
opt3.onFinish = { response in
//进行具体的响应操作...
}
operationQueue.addOperation(opt3)
} catch let error {
print("请求失败: \(error)")
}
可以使用 cancel() 方法停止单个任务:
opt2.cancel() //取消这个请求任务
也可以通过 NSOperationQueue 的 cancelAllOperations() 方法取消所有的任务:
operationQueue.cancelAllOperations() //取消所有线程操作