swift开发之Alamofire
来源:互联网 发布:信捷plc编程线usb驱动 编辑:程序博客网 时间:2024/06/06 02:09
要获取最新版本的 Alamofire,前往https://github.com/Alamofire/Alamofire然后单击网页右边的Download ZIP按钮。接着在 Finder 中打开起始项目文件夹,然后将Alamofire-master文件夹拖入到您的主项目文件夹中。
打开Alamofire-master文件夹(现在它位于您的项目文件夹中),然后将Alamofire.xcodeprij文件(注意是蓝色图标!不是白色图标!)直接拖进 Xcode 中的 Photomania 项目下面,如下图所示:
接下来,单击Photomania项目,进入General窗口。滚动到Embedded Binaries项,然后单击其下方的 + 号。选择Alamofire.framework,最后点击Add完成添加。
生成并运行您的项目以确保没有任何错误出现,然后就可以进入到下一节内容了。
Alamofire使用方法
GET 请求
Alamofire.request(.GET, "http://httpbin.org/get")
带参数Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo": "bar"])
Response结果处理Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo": "bar"]) .response { (request, response, data, error) in println(request) println(response) println(error) }
Response结果字符串处理Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo": "bar"]) .responseString { (request, response, 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
请求的第一个参数.
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 使用Alamofire.ParameterEncoding
可以支持URL query/URI form,JSON, PropertyList方式编码参数。
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, "http://httpbin.org/post", parameters: parameters, encoding: .JSON(options: nil)) .responseJSON {(request, response, JSON, error) 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(.POST, "http://httpbin.org/post", file: fileURL)
上传进度
Alamofire.upload(.POST, "http://httpbin.org/post", file: fileURL) .progress { (bytesWritten, totalBytesWritten, totalBytesExpectedToWrite) in println(totalBytesWritten) } .responseJSON { (request, response, JSON, error) in println(JSON) }
下载
支持的类型- Request
- Resume Data
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, "http://httpbin.org/stream/100", destination: destination)
下载进度Alamofire.download(.GET, "http://httpbin.org/stream/100", destination: destination) .progress { (bytesRead, totalBytesRead, totalBytesExpectedToRead) in println(totalBytesRead) } .response { (request, response, _, error) in println(response) }
认证(Authentication)
支持以下几种认证- HTTP Basic
- HTTP Digest
- Kerberos
- NTLM
let user = "user"let password = "password"Alamofire.request(.GET, "https://httpbin.org/basic-auth/\(user)/\(password)") .authenticate(HTTPBasic: user, password: password) .response {(request, response, _, 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, response, _, error) in println(response)}
欢迎转载,转载请注明出处http://blog.csdn.net/colinasd
Printable
let request = Alamofire.request(.GET, "http://httpbin.org/ip")println(request)// GET http://httpbin.org/ip (200)
调试
let request = Alamofire.request(.GET, "http://httpbin.org/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"
0 1
- swift开发之Alamofire
- swift开发笔记:Alamofire 4.5
- Swift 之 Alamofire 网络请求、取消请求
- 【IOS开发】swift版的AFNETworking之Alamofire的用法 图片上传
- swift开发之网络数据库(mysql)的增删改查(2)--引用Alamofire的post传值
- iOS开发 - swift通过Alamofire实现https通信
- iOS开发之清除Alamofire缓存
- Swift网络库Alamofire
- Swift-解读Alamofire
- 五、Swift Alamofire入门
- Alamofire-Swift Networking网络库
- Alamofire-Swift Networking网络库
- Alamofire-Swift Networking网络库
- Swift 第三方库 - Alamofire
- Swift网络请求库Alamofire
- swift利用Alamofire上传图片
- Swift基础之使用Alamofire库进行网络请求和断点下载
- Swift基础之使用Alamofire库进行网络请求和断点下载
- 连连看游戏总结
- Android应用程序窗口(Activity)的测量(Measure)、布局(Layout)和绘制(Draw)过程分析
- 啊哈C——学习5.7练习
- 各种最小生成树。 HDU 1863 HDU 1301 POJ 1258
- LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
- swift开发之Alamofire
- 通过rsync+inotify实现文件的实时备份同步
- WV.44-菱形星号图
- 开口谈薪水前,你一定要知道的事!
- linux 下单独配置eclipse+cdt+opencv开发程序
- 工作总结_10
- 巨人携程迅雷美团微软小米百度腾讯阿里等历年笔试面试题
- 新年总结
- 因 View Agent 和连接服务器之间不存在网络通信导致自定义错误