Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Alamofire-Swift Networking网络库大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

预览图 Swift Alamofire 简介 Alamofire是 Swift 语言的 http 网络开发工具包,相当于Swift实现AFNetworking版本。 当然,AFNetworking非常稳定,在Mac OSX与iOS中也能像其他Objective-C代码一样用Swift编写。不过Alamofire更适合Swift语言风格习惯(Alamofire与AFNetworking可以共存一个项

预览图

Swift Alamofire 简介

Alamofire Swift 语言的 http 网络开发工具包,相当于Swift实现AFNetworking版本。

当然,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.下载源码将Alamofire.xcodeproj拖拽至工程中如下图:

2.工程->Build Phases->Target Dependencies 增加Alamofire

3.点击如下图“+”按钮选择"New Copy Files Phase"添加,改名为“Copy Frameworks”并 选择选项下的“ DesTination”为“ Frameworks”,然后添加“Alamofire.framework”

4.在需要使用的swift文件中加入import Alamofire,如下图:

功能

  • Chainable request / Response methods
  • URL / JSON / plist Parameter Encoding
  • Upload File / Data / Stream
  • Download using request or Resume data
  • Authentication with NSURLCredential
  • Progress Closure & NSProgress
  • cURL Debug Output

1.0版本计划

1.0版本将在Swift 1.0发布之后

  • 100% Unit Test Coverage
  • Complete Documentation
  • http Response Validation
  • TLS Chain Validation
  • UIKit / AppKit Extensions

环境要求

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 @H_849_160@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方式编码参数。

Parameter Encoding
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 方法

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

上传(Uploading)

支持的类型
  • File
  • Data
  • Stream
  • @H_265_59@multipart (Coming Soon)
上传文件
let fileURL = NSBundle.mainBundle()
                      .URLForresource("Default",withExtension: "png")

Alamofire.upload(.POST,file: fileURL)

上传进度

Alamofire.upload(.POST,file: fileURL)
        .progress { (bytesWritten,@R_52_10586@lBytesWritten,@R_52_10586@lBytesExpectedToWritE) in
            println(@R_52_10586@lBytesWritten)
        }
        .responseJSON { (request,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,desTination: desTination)
下载进度
Alamofire.download(.GET,desTination: desTination)
         .progress { (bytesRead,@R_52_10586@lBytesRead,@R_52_10586@lBytesExpectedToRead) in
             println(@R_52_10586@lBytesRead)
         }
         .response { (request,_,error) in
             println(responsE)
         }

认证(Authentication)

支持以下几种认证 http basic认证
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)
}

Printable

let 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是同一个作者

大佬总结

以上是大佬教程为你收集整理的Alamofire-Swift Networking网络库全部内容,希望文章能够帮你解决Alamofire-Swift Networking网络库所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。