我正在使用优秀的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
然而,它确实似乎
我尝试过这种类型的东西..
// 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根本不起作用。