Alamofire使用方法

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

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, "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

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, 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) } 

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"

转载于:https://www.cnblogs.com/karling/p/5056776.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值