在使用Alamofire进行多方式分割时,是否真的有办法添加标题?

时间:2017-06-10 21:52:35

标签: ios alamofire

我正在使用优秀的Alamofire上传文件,多部分表单数据,就像IBM Bluemix中发生的那样......

Alamofire.upload(
multipartFormData: { multipartFormData in
   multipartFormData.append(self.liveImageData!,
                        withName: "abc.jpeg", fileName: "", mimeType: "image/jpeg")
   multipartFormData.append(blahFile, withName: "parameters")
            },
   to: theUrlString,
   encodingCompletion: { encodingResult in
         ...

事实证明,Bluemix有一个令人难以置信的(和狭隘的)搞砸,如果Accept-Language的标题不是“en”或其他几个 - 它会失败。

(运气不好,Alamofire确实有助于添加一个语言标题,如果 - 比如说 - iPod在巴拉圭或越南;或者它可能是Bluemix正在使用其他一些BS,如IP位置。)

好的,所以添加标题Accept-Language:en

然而,它确实似乎

...在Alamofire中绝对没有办法添加自定义标题,并上传文件?

我尝试过这种类型的东西..

// this approach does ..... nothing
let CF = URLSessionConfiguration.default
var DH = Alamofire.SessionManager.defaultHTTPHeaders
DH["Accept-Language"] = "en"
CF.httpAdditionalHeaders = DH
superDuperManager = Alamofire.SessionManager(configuration: CF)
superDuperManager!.upload(

它什么也没做。无赖!

有办法吗?

对于任何与Bluemix斗争的人,我发现欠发达但是,更好,更好的库https://github.com/JustHTTP/Just,谢天谢地,解决了这个问题

// use this to set a header in the oddly named "Just" library
var jds = JustSessionDefaults()
jds.headers = ["Accept-Language":"en"]
let j = JustOf<HTTP>(defaults: jds)
j.post( urlStringHere,
    // data: ["name": "fattie", "pass":"321go"],
    files: ["LV.jpeg": .data("LV.jpeg", liveImageData!, "image/jpeg")]
) { r in
    if r.ok {

        print("worked? WTH eh.")
        DispatchQueue.main.async {
            self.processResult(r.json)
        }
    }
}

当然有办法在Alamo中设置标题(当使用Alamofire.upload时)?

注意这个看似相关的帖子https://stackoverflow.com/a/40234128/294884根本不起作用。

0 个答案:

没有答案