一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Swift HTTP网络操作库SwiftHTTP使用详解1(配置,及数据请求)

时间:2016-01-28 编辑:简简单单 来源:一聚教程网

一,SwiftHTTP的说明与配置

1,什么是SwiftHTTP
SwiftHTTP本质是基于`NSURLSession`,并做了封装。使用SwiftHTTP可以让我们网络请求相关代码(如获取数据,提交数据,上传文件,下载文件等)更加简洁易用。(有点类似于我前面文章介绍的另一个网络库:Alamofire)

2,SwiftHTTP的功能特性:

(1)便利的闭包API
(2)支持运行队列(NSOperationQueue)

(3)支持参数编码
(4)内置JSON请求序列化
(5)上传/下载文件带有进度
(6)代码简洁

3,SwiftHTTP的安装与配置 

(1)从 GitHub 上下载最新的代码:https://github.com/daltoniam/SwiftHTTP 
(2)将下载下来的源码包中 SwiftHTTP.xcodeproj 拖拽至你的工程中
原文:Swift - HTTP网络操作库SwiftHTTP使用详解1(配置,及数据请求)

(3)工程 -> General -> Embedded Binaries项,增加 SwiftHTTP.framework
原文:Swift - HTTP网络操作库SwiftHTTP使用详解1(配置,及数据请求)

(4)最后,在需要使用 SwiftHTTP 的地方 import 进来就可以了


import SwiftHTTP

二,使用SwiftHTTP进行数据请求

1,GET请求

(1)不带参数


do {
    let opt = try HTTP.GET("http://111com.net")
    opt.start { response in
        if let err = response.error {
            print("error: \(err.localizedDescription)")
            return
        }
        print("获取到数据: \(response.description)")
    }
} catch let error {
    print("请求失败: \(error)")
}

(2)带参数


do {
    //实际的url是: http://111com.net?hello=world¶m2=1
    let opt = try HTTP.GET("http://111com.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.111com.net", parameters: params)
    opt.start { response in
        //进行具体的响应操作...
    }
} catch let error {
    print("请求失败: \(error)")
}

3,支持自定义Http头信息(HTTP Headers)


do {
    let opt = try HTTP.GET("http://www.111com.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.111com.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.111com.net ", method: .GET)
    opt3.onFinish = { response in
        //进行具体的响应操作...
    }
    operationQueue.addOperation(opt3)
} catch let error {
    print("请求失败: \(error)")
}

可以使用 cancel() 方法停止单个任务:


opt2.cancel() //取消这个请求任务

也可以通过 NSOperationQueue 的 cancelAllOperations() 方法取消所有的任务:


operationQueue.cancelAllOperations() //取消所有线程操作

热门栏目