
Alamofire是Swift语言的 http 网络开发工具包,相当于Swift实现AFNetworking版本。
当然,AFNetworking非常稳定,在Mac OSX与iOS中也能像其他Objective-C代码一样用Swift编写。不过Alamofire更适合Swift语言风格习惯(Alamofire与AFNetworking可以共存一个项目中,互不影响).
Alamofire安装使用方法Alamofire 取名来源于Alamo Fire flower
使用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.下载源码将Alamofire.xcodeproj拖拽至工程中如下图:
2.工程->Build Phases->Target DependencIEs 增加Alamofire
3.点击如下图“+”按钮选择"New copy files Phase"添加,改名为“copy Frameworks”并 选择选项下的“ Destination”为“ Frameworks”,然后添加“Alamofire.framework”
4.在需要使用的swift文件中加入import Alamofire,如下图:
1.0版本将在Swift 1.0发布之后。
100% Unit Test Coverage Complete documentation http Response ValIDation TLS Chain ValIDation UIKit / AppKit Extensions 环境要求 Xcode 6iOS 7.0+ / Mac OS X 10.9+
Alamofire使用方法 GET 请求Alamofire.request(.GET,"http://httpbin.org/get")带参数
"http://httpbin.org/get",parameters: ["foo": "bar"]) Response结果处理
"bar"]) .response { (request,response,data,error) in println(request) println(response) println(error) } Response结果字符串处理 "bar"]) .responseString { (request,string,145)">in println(string) } http 方法(Medthods) Alamofire.Method enum 列表出在RFC 2616中定义的http方法 §9:
public enum Method: String { case OPTIONS = "OPTIONS" GET = "GET" head = "head" POST = "POST" PUT = "PUT" PATCH = "PATCH" DELETE = "DELETE" TRACE = "TRACE" CONNECT = "CONNECT"}
这些值可以作为Alamofire.request请求的第一个参数.
POST,22)">"http://httpbin.org/post")PUT,22)">"http://httpbin.org/put")DELETE,22)">"http://httpbin.org/delete")POST请求
let parameters = [ "bar",22)">"baz": ["a",1],22)">"qux": [ "x": 1,22)">"y": 2,22)">"z": 3 ]]"http://httpbin.org/post",parameters: parameters)
发送以下httpBody内容:
foo=bar&baz[]=a&baz[]=1&qux[x]=1&qux[y]=2&qux[z]=3
Alamofire 使用Alamofire.ParameterEnCoding可以支持URL query/URI form,JsON,PropertyList方式编码参数。
ParameterEnCoding { URL JsON(options: NSJsONWritingOptions) PropertyList(format: nspropertyListFormat,options: nspropertyListWriteOptions) func encode(request: NSURLRequest,parameters: [String: AnyObject]?) -> (NSError?) { ... }}NSURLRequest方式编码参数
let URL = NSURL(string: "http://httpbin.org/get")var request = NSURLRequest(URL: URL)let parameters = ["bar"]let enCoding = Alamofire.ParameterEnCoding.URL(request,207)">_) = enCoding.encode(request,parameters)POST JsON格式数据
JsON(options: nil)) .responseJsON {(request,153)">JsON,145)">in println(JsON) }Response 方法 response() responseString(enCoding: nsstringencoding) responseJsON(options: NSJsONReadingOptions) responsePropertyList(options: nspropertyListReadOptions) 上传(Uploading) 支持的类型 file Data Stream Multipart (Coming Soon) 上传文件
let fileURL = NSBundle.mainBundle() .URLForResource("Default",withExtension: "png")Alamofire.upload(.println(totalBytesWritten) } .responseJsON { (request,153)">JsON) }下载 Request Resume Data 下载文件
Alamofire.download(."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 = Request.suggestedDownloadDestination(directory: .UserDomainMask)下载进度in println(totalBytesRead) } .response { (request,207)">_,153)">println(response) }认证(Authentication) 支持以下几种认证 http Basic http Digest Kerberos NTLM http basic认证let user = "user"let password = "password""https://httpbin.org/basic-auth/\(user)/\(password)") .authenticate(httpBasic: user,password: password) .response {(request,145)">in println(response) }采用NSURLCredential&NSURLProtectionSpace方式认证"password"let credential = NSURLCredential(user: user,password: password,persistence: .ForSession)let protectionSpace = NSURLProtectionSpace(host: "httpbin.org",port: 0,`protocol`: "https",realm: nil,153)">authenticationMethod: NSURLAuthenticationMethodhttpBasic) Alamofire.request(.https://httpbin.org/basic-auth/\(user)/\(password)") .authenticate(usingCredential: credential,153)">forProtectionSpace: protectionSpace) .response {(request,153)">println(response)}Printablelet request = "http://httpbin.org/ip")println(request)// GET http://httpbin.org/ip (200)调试"bar"])deBUGPrintln(request)Output (cURL)$ curl -i \ -H "User-Agent: Alamofire" \ -"Accept-EnCoding: Accept-EnCoding: gzip;q=1.0,compress;q=0.5" \ -"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是同一个作者
总结以上是内存溢出为你收集整理的Alamofire-Swift Networking网络库全部内容,希望文章能够帮你解决Alamofire-Swift Networking网络库所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)