Sie hatten Schwierigkeiten, dieses herauszufinden. Post-Anfragen mit Alamofire (4.4.0) und meinen Headern funktionieren für die meisten Dinge gut, aber dieses Mal muss ich ein Wörterbuch mit Strings und ein Video senden.Hinzufügen von Headern zu Alamofire multiPartFormData Upload
Das Video wird über einen UIImagePickerController aufgezeichnet und die Informationen, die es schließlich zum Wörterbuch machen, werden über eine Reihe von Schiebereglern, Schaltern und Textfeldern erstellt.
Der Block, der Mühe gegeben mich ist wie folgt:
let headers: HTTPHeaders = [
"X-Access-Token": self.user
]
let requestUrl = try! URLRequest(url: "http://exampleUrl.com", method: .post, headers: headers)
upload(
multipartFormData: { (multipartFormData) in
multipartFormData.append(videoURL!, withName: "video_source")
multipartFormData.append(self.alphaLabel.text!.data(using: .utf8)!, withName: "alpha")
multipartFormData.append(self.betaLabel.text!.data(using: .utf8)!, withName: "beta")
multipartFormData.append(self.gammaLabel.text!.data(using: .utf8)!, withName: "gamma")
multipartFormData.append(self.deltaTextField.text!.data(using: .utf8)!, withName: "delta")
multipartFormData.append(self.epsilonScrollPicker.data(using: .utf8)!, withName: "epsilon")
multipartFormData.append(zetaArray!.data(using: .utf8)!, withName: "zeta")
},
to: requestUrl as! URLConvertible) { encodingResult in
switch encodingResult {
case .success (let upload, _, _):
upload.responseJSON { response in
print(response)
}
case .failure (let encodingError):
print(encodingError)
}
}
Der obige Code gibt: "Gewinde 1: Signal SIGABRT"
Die Konsole Ausgänge: „konnte nicht werfen Wert Geben Sie 'Foundation.URLRequest' in 'Alamofire.URLConvertible' ein. "
Um zu überprüfen, um zu sehen, ob alles andere funktioniert, ich das lief:
let requestUrl "http://exampleUrl.com"
upload(
multipartFormData: { (multipartFormData) in
multipartFormData.append(videoURL!, withName: "video_source")
multipartFormData.append(self.alphaLabel.text!.data(using: .utf8)!, withName: "alpha")
multipartFormData.append(self.betaLabel.text!.data(using: .utf8)!, withName: "beta")
multipartFormData.append(self.gammaLabel.text!.data(using: .utf8)!, withName: "gamma")
multipartFormData.append(self.deltaTextField.text!.data(using: .utf8)!, withName: "delta")
multipartFormData.append(self.epsilonScrollPicker.data(using: .utf8)!, withName: "epsilon")
multipartFormData.append(zetaArray!.data(using: .utf8)!, withName: "zeta")
},
to: requestUrl as! URLConvertible) { encodingResult in
switch encodingResult {
case .success (let upload, _, _):
upload.responseJSON { response in
print(response)
}
case .failure (let encodingError):
print(encodingError)
}
}
Wenn ich eine andere URL verwenden, eine ohne andere Parameter, erhalte ich eine 401 - ungültige Zugriffstoken von meinem Server. Dies ist zu erwarten, da ich mit dieser neuen Anfrage keinen Header im Header übergeben kann.
Wenn jemand Licht auf, wie man einen Upload multiPartFormData Anfrage und haben eine Kopfzeile enthalten für die Authentifizierung, würde ich es schätzen wissen.
Ich versuche nicht, ein Bild hochzuladen. Ich glaube also nicht, dass ich Ihre ** UIImageJPEGRepräsentation ** nutzen könnte. Wenn Sie nicht das Äquivalent für kUTTypeMovie kennen, weiß ich nicht, ob das, was Sie haben, für das, was ich brauche, funktioniert. –
@NickDiVona Ich habe dir gesagt, fügen Sie Ihren Parameter hinzu und behandeln Sie die Antwort. Dies ist nur eine Darstellung von Almofire Method Call. Wenn Sie UIImageJPEGRepresentation wissen, geben Sie NSData zurück und Sie können dort Ihre Videodaten hinzufügen. – ChanWarde
Ah ich sehe. Vielen Dank. –