Alamofire

Alamofire 是一款用swift写的用于http网络连接的库,目的是用来在swift中代替OC的AFNetworking。

使用十分简单:

1
2
3
4
5
//swift
import Alamofire

Alamofire.request(.GET, "http://httpbin.org/get")

安装

须要用swift,项目必须运行在iOS 8或者更高版本iOS。OS X Mavericks或者更高版本OS上。用OC其实也可以,但是折腾很多东西……OC还是直接用AFNetworking吧~

CocoaPods

把下面这些加到Podfile里面然后 pod install

1
2
3
4
5
6
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

pod 'Alamofire', '~> 1.2'

carthage

把下面这些加到 Cartfile里面:

1
2
github "Alamofire/Alamofire" >= 1.2

或者也可以手动安装……详情见Alamofire

用法

Alamofire所有请求都是是异步的,所以可以放心大胆的用~

1
2
//swift
import Alamofire

发起一个连接:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//swift
import Alamofire

Alamofire.request(.GET, "http://httpbin.org/get")

```


**收到数据转为string**


```swift
//swift
Alamofire.request(.GET, "http://httpbin.org/get")
.responseString { (_, _, string, _) in
println(string)
}

收到数据转为JSON

1
2
3
4
5
//swift
Alamofire.request(.GET, "http://httpbin.org/get")
.responseJSON { (_, _, JSON, _) in
println(JSON)
}

转化结果的方法:

  • response()
  • responseString(encoding: NSStringEncoding)
  • responseJSON(options: NSJSONReadingOptions)
  • responsePropertyList(options: NSPropertyListReadOptions)

Alamofire支持的HTTP方法

1
2
3
4
5
6
7
8
9
10
11
12
//swift
public enum Method: String {
case OPTIONS = "OPTIONS"
case GET = "GET"
case HEAD = "HEAD"
case POST = "POST"
case PUT = "PUT"
case PATCH = "PATCH"
case DELETE = "DELETE"
case TRACE = "TRACE"
case CONNECT = "CONNECT"
}

使用时修改第一个参数即可:

1
2
3
4
5
6
//swift
Alamofire.request(.POST, "http://httpbin.org/post")

Alamofire.request(.PUT, "http://httpbin.org/put")

Alamofire.request(.DELETE, "http://httpbin.org/delete")

加参数的网络请求:

GET请求:

1
2
3
//swift
Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo": "bar"])
// http://httpbin.org/get?foo=bar

POST请求:

1
2
3
4
5
6
7
8
9
10
11
12
13
//swift
let parameters = [
"foo": "bar",
"baz": ["a", 1],
"qux": [
"x": 1,
"y": 2,
"z": 3
]
]

Alamofire.request(.POST, "http://httpbin.org/post", parameters: parameters)
// HTTP body: foo=bar&baz[]=a&baz[]=1&qux[x]=1&qux[y]=2&qux[z]=3

由于大部分网络数据都是JSON格式的,所以Alamofire搭配SwiftyJSON会比较好用

介于swift一直在升级,很多东西会经常变动。这篇文档也可能过一段时间就过时了,可以到Alamofire查看具体的改动,我也会经常来更新下博客的~