Alamofire-Swift Networking网络库
预览图Swift Alamofire 简介
当然,AFNetworking非常稳定,在Mac OSX与iOS中也能像其他Objective-C代码一样用Swift编写。不过Alamofire更适合Swift语言风格习惯(Alamofire与AFNetworking可以共存一个项目中,互不影响).
Alamofire安装使用方法使用CocoaPods安装,在podfile source 'https://github.com/CocoaPods/Specs.git'
platform :ios,'8.0'
use_frameworks!
pod 'Alamofire','~> 1.2'
submodule 方式安装 $ git submodule add https://github.com/Alamofire/Alamofire.git
1.下载源码将 2.工程->Build Phases->Target Dependencies 增加Alamofire 3.点击如下图“+”按钮选择"New Copy Files Phase"添加,改名为“Copy Frameworks”并 选择选项下的“ Destination”为“ Frameworks”,然后添加“Alamofire.framework” 4.在需要使用的swift文件中加入 功能
1.0版本计划1.0版本将在Swift 1.0发布之后。
环境要求Xcode 6 iOS 7.0+ / Mac OS X 10.9+ Alamofire使用方法GET 请求Alamofire.request(.GET,"http://httpbin.org/get") 带参数
Alamofire.request(.GET,"http://httpbin.org/get",parameters: ["foo": "bar"]) Response结果处理
Alamofire.request(.GET,parameters: ["foo": "bar"])
.response { (request,response,data,error) in
println(request)
println(response)
println(error)
} Response结果字符串处理
Alamofire.request(.GET,parameters: ["foo": "bar"])
.responseString { (request,string,error) in
println(string)
}
HTTP 方法(Medthods)Alamofire.Method enum 列表出在RFC 2616中定义的HTTP方法 §9: 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"
}
这些值可以作为 Alamofire.request(.POST,"http://httpbin.org/post")
Alamofire.request(.PUT,"http://httpbin.org/put")
Alamofire.request(.DELETE,"http://httpbin.org/delete")
POST请求let parameters = [
"foo": "bar","baz": ["a",1],"qux": [
"x": 1,"y": 2,"z": 3
]
]
Alamofire.request(.POST,"http://httpbin.org/post",parameters: parameters)
发送以下HttpBody内容: foo=bar&baz[]=a&baz[]=1&qux[x]=1&qux[y]=2&qux[z]=3 Alamofire 使用 enum ParameterEncoding {
case URL
case JSON(options: NSJSONWritingOptions)
case PropertyList(format: NSPropertyListFormat,options: NSPropertyListWriteOptions)
func encode(request: NSURLRequest,parameters: [String: AnyObject]?) ->
(NSURLRequest,NSError?)
{ ... }
} NSURLRequest方式编码参数
let URL = NSURL(string: "http://httpbin.org/get")
var request = NSURLRequest(URL: URL)
let parameters = ["foo": "bar"]
let encoding = Alamofire.ParameterEncoding.URL
(request,_) = encoding.encode(request,parameters) POST JSON格式数据
Alamofire.request(.POST,parameters: parameters,encoding: .JSON(options: nil))
.responseJSON {(request,JSON,error) in
println(JSON)
}
Response 方法
上传(Uploading)支持的类型
let fileURL = NSBundle.mainBundle()
.URLForResource("Default",withExtension: "png")
Alamofire.upload(.POST,file: fileURL)
上传进度Alamofire.upload(.POST,file: fileURL)
.progress { (bytesWritten,totalBytesWritten,totalBytesExpectedToWrite) in
println(totalBytesWritten)
}
.responseJSON { (request,error) in
println(JSON)
}
下载支持的类型
Alamofire.download(.GET,"http://httpbin.org/stream/100",destination: { (temporaryURL,response) in
if let directoryURL = NSFileManager.defaultManager()
.URLsForDirectory(.DocumentDirectory,inDomains: .UserDomainMask)[0]
as? NSURL {
let pathComponent = response.suggestedFilename
return directoryURL.URLByAppendingPathComponent(pathComponent)
}
return temporaryURL
}) 下载到默认路径
let destination = Alamofire.Request.suggestedDownloadDestination(directory: .DocumentDirectory,domain: .UserDomainMask)
Alamofire.download(.GET,destination: destination) 下载进度
Alamofire.download(.GET,destination: destination)
.progress { (bytesRead,totalBytesRead,totalBytesExpectedToRead) in
println(totalBytesRead)
}
.response { (request,_,error) in
println(response)
}
认证(Authentication)支持以下几种认证
let user = "user"
let password = "password"
Alamofire.request(.GET,"https://httpbin.org/basic-auth/(user)/(password)")
.authenticate(HTTPBasic: user,password: password)
.response {(request,error) in
println(response)
} 采用NSURLCredential&NSURLProtectionSpace方式认证
let user = "user"
let password = "password"
let credential = NSURLCredential(user: user,password: password,persistence: .ForSession)
let protectionSpace = NSURLProtectionSpace(host: "httpbin.org",port: 0,`protocol`: "https",realm: nil,authenticationMethod: NSURLAuthenticationMethodHTTPBasic) Alamofire.request(.GET,"https://httpbin.org/basic-auth/(user)/(password)") .authenticate(usingCredential: credential,forProtectionSpace: protectionSpace) .response {(request,error) in
println(response)
}
Printablelet request = Alamofire.request(.GET,"http://httpbin.org/ip")
println(request)
// GET http://httpbin.org/ip (200)
调试let request = Alamofire.request(.GET,parameters: ["foo": "bar"])
debugPrintln(request)
Output (cURL)$ curl -i
-H "User-Agent: Alamofire"
-H "Accept-Encoding: Accept-Encoding: gzip;q=1.0,compress;q=0.5"
-H "Accept-Language: en;q=1.0,fr;q=0.9,de;q=0.8,zh-Hans;q=0.7,zh-Hant;q=0.6,ja;q=0.5"
"http://httpbin.org/get?foo=bar"
更多的用法将会在接口文档中一一列出,敬请期待。 Alamofire与AFNetworking是同一个作者 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |