HttpSession
构建状态
概览
基于 TCP/IP 的 HTTP 通信可以简化,并提供 Twitter OAuth
API 服务器: https://sevens-api.herokuapp.com/
推荐。
推荐使用 Codable SwiftyJSON 和 SWXMLHash。
Twitter API 回调修复
https://developer.twitter.com/en/docs/basics/callback_url.html
安装
Cocoapods
CocoaPods 是 Cocoa 项目的依赖管理器。您可以使用以下命令安装它
$ gem install cocoapods
要使用 CocoaPods 在您的 Xcode 项目中集成 GMSDirection,请将它在您的 Podfile
中指定
vi ./Podfile
如果您没有 iOS 的 Google 地图 SDK
target 'Target Name' do
use_frameworks!
pod 'HttpSession'
end
然后,运行以下命令
$ pod setup
$ pod install
使用它
通过 SSH:对于那些计划经常进行直接提交的用户,通过 SSH 克隆可能提供更好的体验(需要将 SSH 密钥上传到 GitHub)
$ git clone [email protected]:keisukeYamagishi/HttpSession.git
通过 https:对于只检查原始资源的用户,HTTPS 工作得最好
$ git clone https://github.com/keisukeYamagishi/HttpSession.git
示例代码
GET HTTP 方法
Http.request(url: "https://sevens-api.herokuapp.com/getApi.json", method: .get)
.session(completion: { (data, responce, error) in
self.detail(data: data!)
})
POST HTTP 方法
let param = ["http_post":"Http Request POST 😄"]
Http.request(url: "https://sevens-api.herokuapp.com/postApi.json",method: .post)
.session(param: param,
completion: { (data, responce, error) in {
self.detail(data: data!, param: param.hashString())
})
下载数据的 HTTP 方法
Http.request(url: "https://shichimitoucarashi.com/mp4/file1.mp4", method: .get)
.download(progress: { (written, total, expectedToWrite) in
let progress = Float(total) / Float(expectedToWrite)
print(String(format: "%.2f", progress * 100) + "%")
}, download: { (location) in
print ("location: \(String(describing: location))")
}, completionHandler: { (data, responce, error) in
self.detail(data: data!)
})
与 Moya 类似
enum DemoApi {
case zen
case post(param:Tapul)
case download
}
extension DemoApi:ApiProtocol {
var domain: String{
switch self {
case .zen, .post:
return "https://sevens-api.herokuapp.com/"
case .download:
return "https://shichimitoucarashi.com"
}
}
var endPoint: String {
switch self {
case .zen:
return "getApi.json"
case .post:
return "postApi.json"
case .download:
return "mp4/Designing_For_iPad_Pro_ad_hd.mp4"
}
}
var method: Http.method {
switch self {
case .zen:
return .get
case .post:
return .post
case .download:
return .get
}
}
var header: [String : String]? {
return [:]
}
var params: [String : String] {
switch self {
case .zen:
return [:]
case .post(let val):
return [val.value.0:val.value.1]
case .download:
return [:]
}
}
var isCookie: Bool {
return false
}
var basicAuth: [String : String]? {
return nil
}
}
let provider:ApiProvider = ApiProvider<DemoApi>()
provider.send(api: .zen) { (data, responce, error) in
self.detail(data: data!)
}
provider.send(api: .post(param: (key:"http_post",value:"Http Request POST 😄"))) { (data, responce, error) in
print (String(data: data!, encoding: .utf8))
}