如何使用Alamofire上传带有身份验证的MultipartFormData [英] How to upload MultipartFormData with authentication using Alamofire

查看:523
本文介绍了如何使用Alamofire上传带有身份验证的MultipartFormData的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用Alamofire上传 MultipartFormData 并进行身份验证?我不明白的部分是放在哪里 .authenticate(用户名:用户名,密码:密码)。?我通常使用 MultipartFormData 上传图片:

How to upload MultipartFormData with authentication using Alamofire? The part that I don't understand is where to put .authenticate(user: username, password: password).? This is how I usually upload pictures using MultipartFormData:

Alamofire.upload(
        .POST, "https://myExampleUrl/photo/upload", headers: headers, multipartFormData: { multipartFormData in
            multipartFormData.appendBodyPart(data: "default".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"_formname")
            multipartFormData.appendBodyPart(fileURL: fileUrl, name: "photo")
        },
        encodingCompletion: { encodingResult in
            switch encodingResult {

            case .Success(let upload, _, _):
                upload.responseString { response in
                    debugPrint(response)
                }

            case .Failure(let encodingError):
                print(encodingError)
            }
        }
    )

我认为可以添加身份验证过程进入标题?

I think it's possible to add authentication process into headers?

推荐答案

没有太多时间来探索 rilbits.com的API 。当我访问Safari中的地址时,我收到以下错误:

Haven't had much time to explore the API for rilbits.com. When I visited the address in Safari, I got the following error:

Please add 'Authorization' or 'X-Access-Token' header to your request 

这表明有两种选择:


  1. 首先登录并获取访问令牌,然后您可以使用上传请求

  2. 发送基本授权标题以及上传请求。

  1. Login first and get back an access token, which you can then use the for the upload request
  2. Send a basic Authorization header along with the upload request.

以下是发送<$ c $的方法c>授权标题(第二个选项):

Here's how you can send the Authorization header (second option):

let username = "username"
let password = "password"

let credentialData = "\(username):\(password)".dataUsingEncoding(NSUTF8StringEncoding)!                  
let base64Credentials = credentialData.base64EncodedStringWithOptions([])
let headers = ["Authorization": base64Credentials]

Alamofire.upload(
    .POST,
    "https://rilbits.com/supersafe/photo/upload",
    headers: headers,
    multipartFormData: { multipartFormData in
        let data = "default".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!
        multipartFormData.appendBodyPart(data: data, name: "_formname")
        multipartFormData.appendBodyPart(fileURL: fileURL, name: "photo")
    },
    encodingCompletion: { encodingResult in
        switch encodingResult {

        case .Success(let upload, _, _):
            upload.responseString { response in
                debugPrint(response)
            }

        case .Failure(let encodingError):
            print(encodingError)
        }
    }
)

完整披露:


  • 授权代码取自Alamofire的 readme

  • 我没有测试上面的代码

这篇关于如何使用Alamofire上传带有身份验证的MultipartFormData的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆