HttpSession 1.10.0

HttpSession 1.10.0

Keisuke Yamagishi 执照。



  • 作者:
  • keisuke

HttpSession

构建状态

build

概览

基于 TCP/IP 的 HTTP 通信可以简化,并提供 Twitter OAuth

API 服务器: https://sevens-api.herokuapp.com/

推荐。

推荐使用 Codable SwiftyJSON 和 SWXMLHash。

Codable

SwiftyJSON

drmohundro/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))
}