Alamofire 4 swift 3 上传带有标题的 MultipartFormData 未发布

Posted

技术标签:

【中文标题】Alamofire 4 swift 3 上传带有标题的 MultipartFormData 未发布【英文标题】:Alamofire 4 swift 3 Uploading MultipartFormData with header not posting 【发布时间】:2016-11-03 15:04:45 【问题描述】:

我的代码有问题,新的 Alamofire 4 已在网上搜索示例 - 不走运。我的代码跳过了它没有调用 URL 的 post 方法:

Alamofire.upload(multipartFormData:
        multipartFormData in
        multipartFormData.append(tempUrl, withName: self.path),
                     usingThreshold:UInt64.init(),
                     to:posturl!,
                     method:.post,
                     headers: Oauthdata.uplodHeader ,
                     encodingCompletion:  encodingResult in
                        switch encodingResult 
                        case .success(let upload, _, _):
                            upload.responseJSON  response in
                                debugPrint(response)
                            
                        case .failure(let encodingError):
                            print(encodingError)
                        
    ) catch 
        print("Somethings not right")

【问题讨论】:

什么是Oauthdata.uplodHeader(原文如此)?也请格式化您的代码:) Oauthdata.uplodHeader 是我为 api 创建的结构的标头,以便能够在其他类中使用,这是我在堆栈溢出方面的第一篇文章,请帮助 是的,但你的问题是什么?那不工作?查看 oauthdata 标头(实际值)会很有趣。也尽量不要用!,用guard let url = posturl else return instead 无法发布到我的端点没有呼叫正在尝试将录音上传到端点也有参数我需要与上传一起传递我对新结构有点困惑请帮助 2 周现在我坚持一件事......这是我的标题似乎 uplodHeader = [ "Authorization":("(TokenType) (Token)" as AnyObject) 一样!字符串] 您的 authHeader 应该是:let authHeader: Dictionary<String, String> = ["Authorization" : "Bearer \(authToken)" 或类似的东西。您是否打印了标题以查看其格式是否正确?使用正确的 authToken 值? 【参考方案1】:

尝试使用RequestAdapter协议的方法,在the docs中提到:

class AccessTokenAdapter: RequestAdapter 
    private let accessToken: String

    init(accessToken: String) 
        self.accessToken = accessToken
    

    func adapt(_ urlRequest: URLRequest) throws -> URLRequest 
        var urlRequest = urlRequest
        urlRequest.setValue("Bearer " + accessToken, forHTTPHeaderField: "Authorization")
        return urlRequest
    


class HTTPClient 

    func setupHeader(with authToken: String) 
        let sessionManager = SessionManager()
        sessionManager.adapter = AccessTokenAdapter(accessToken: authToken)
    

HTTPClient 是您执行此设置的类...

【讨论】:

以及如何将其放入我的上传方法中? 您在登录后调用 setupHeader... 当您实际拥有有效令牌时! 得到它的工作非常感谢.....现在我所要做的就是在哪里添加参数 你找到在哪里添加参数了吗?

以上是关于Alamofire 4 swift 3 上传带有标题的 MultipartFormData 未发布的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中使用 Alamofire 上传带有 JSON 参数的图像?

iOS Swift + Alamofire 上传带有 exif 数据的照片

带有 Swift 3 的 Alamofire 4.3,POST 请求不适用于 URL 参数

带有参数和标题的 Alamofire Multipart-form 图像上传 - Swift

使用 Alamofire swift 4 上传文件

GoogleDrive + Alamofire:上传带有属性的文件