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

一,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 拖拽至你的工程中

(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)")
    }
} catch let error {
    print("请求失败: \(error)")
}

(2)带参数

do {
    //实际的url是: http://111cn.net?hello=world&param2=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() //取消所有线程操作

时间: 2024-07-30 23:40:37

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

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

一,Alamofire的说明与配置     1,什么是Alamofire (1)Alamofire 的前身是 AFNetworking.AFNetworking 是 iOS 和 OS X 上很受欢迎的第三方HTTP网络基础库. (2)其实 AFNetwork 的前缀 AF 便是 Alamofire 的缩写. (3)Swift发布后,AFNetworking的作者又用Swift语言写了个相同功能的库,这便是 Alamofire. (4)Alamofire 本质是基于`NSURLSession`,并

Swift实现HTTP网络操作库Alamofire使用详解4(用户权限认证)

  八,使用Alamofire进行用户认证 1,Alamofire支持如下几种认证(Authentication) 本文讲解使用 Alamofire 进行 HTTP Basic 验证. 2,HTTP Basic认证介绍 (1)HTTP Basic认证是允许HTTP服务器对WEB浏览器进行用户身份证的方法. (2)当一个客户端向HTTP服务器进行数据请求时,客户端会接收到HTTP服务器的身份认证要求,这时客户端会提示用户输入用户名及密码,然后将用户名及密码以BASE64加密.并于每次请求数据时,将

Swift HTTP网络操作库Alamofire实现文件上传详解

六,使用Alamofire进行文件上传 1,Alamofire支持如下上传类型: File Data Stream MultipartFormData 2,使用文件流的形式上传文件 let fileURL = NSBundle.mainBundle().URLForResource("hangge", withExtension: "zip")   Alamofire.upload(.POST, "http://www.hangge.com/upload.

Swift HTTP网络操作库Alamofire实现文件下载,断点续传例子

七,使用Alamofire进行文件下载 1,自定义下载文件的保存目录 下面代码将logo图片下载下来保存到用户文档目录下(Documnets目录),文件名不变. Alamofire.download(.GET, "yun_qi_img/logo.png") {     temporaryURL, response in     let fileManager = NSFileManager.defaultManager()     let directoryURL = fileMana

python数据库操作常用功能使用详解(创建表/插入数据/获取数据)_python

实例1.取得MYSQL版本 复制代码 代码如下: # -*- coding: UTF-8 -*-#安装MYSQL DB for pythonimport MySQLdb as mdbcon = Nonetry:    #连接mysql的方法:connect('ip','user','password','dbname')    con = mdb.connect('localhost', 'root',        'root', 'test');    #所有的查询,都在连接con的一个模块

《Android 网络开发与应用实战详解》——2.3节Android系统架构

2.3 Android系统架构 Android 网络开发与应用实战详解 在本节内容中,将进一步分解Android应用程序,详细剖析Android应用程序的核心构成部分,为读者学习本书后面知识打下基础. 2.3.1 Android体系结构介绍 Android作为一个移动设备的平台,其软件层次结构包括操作系统(OS).中间件(MiddleWare)和应用程序(Application).根据Android的软件框图,其软件层次结构自下而上分为以下4层. (1)操作系统层(OS). (2)各种库(Lib

《Android 网络开发与应用实战详解》——2.1节简析Android安装文件

2.1 简析Android安装文件 Android 网络开发与应用实战详解 当我们下载并安装Android后,会在其安装目录中看到一些安装文件.这些文件具体是干什么用的,了解这些对学习后面的开发知识十分有用.所以在本节的内容中将简要介绍这些安装文件的基本知识. 2.1.1 Android SDK目录结构 安装Android SDK后,其安装目录的具体结构如图2-1所示. temp:里面包含了一些常用的文件模板. tools:包含了一些通用的工具文件. usb_driver:包含了AMD64和X8

《Android 网络开发与应用实战详解》——1.4节Android模拟器

1.4 Android模拟器 Android 网络开发与应用实战详解 我们都知道程序开发需要调试,只有经过调试之后才能知道程序是否正确运行.作为一款手机系统,怎么样在能在计算机平台上调试Android程序呢?不用担心,谷歌提供了模拟器来解决此问题.所谓模拟器,就是指在计算机上模拟安卓系统,可以用这个模拟器来调试并运行开发的Android程序.开发人员不需要一个真实的Android手机,使用计算机就可以模拟运行一个手机,即可开发出应用在手机上面的程序.模拟器在计算机上模拟运行的效果如前面的图1-5

《Android 网络开发与应用实战详解》——2.2节解析Android SDK实例

2.2 解析Android SDK实例 Android 网络开发与应用实战详解 在Android安装后的目录中有一个名为"samples"的子目录,在里面保存了SDK中的几个演示实例.这些实例从不同的方面展示了SDK的特性.例如"android-3"目录中的实例文件结构如图2-8所示. 在本节的内容中,将引领读者浏览图2-8中各个实例的效果. 1.HelloActivity 这和编程语言中的Hello Word程序类似,是一个Android平台上的最简单程序,运行后