gpt4 book ai didi

ios - 在 iOS Swift 中使用 Alamofire 发送带有 MultipartFormData 的 POST 参数

转载 作者:IT王子 更新时间:2023-10-29 04:59:21 24 4
gpt4 key购买 nike

我是第一次使用 Alamofire。我使用的是最新版本的 Alamofire 1.3.1。我想在一次 API 调用中发送一张图片、一段视频和一些 POST 参数。我正在使用多部分表单数据。多部分模块正在工作。我在发送额外的 POST 参数params 时遇到问题。下面是我的代码。 “params”是包含额外参数的字典吗?如何在请求中附加这些 POST 参数。请帮忙

        var fullUrl :String = Constants.BASE_URL + "/api/CompleteChallenge"
var params = [
"authKey": Constants.AuthKey,
"idUserChallenge": "16",
"comment": "",
"photo": imagePath,
"video": videoPath,
"latitude": "1",
"longitude": "1",
"location": "india"
]

let imagePathUrl = NSURL(fileURLWithPath: imagePath!)
let videoPathUrl = NSURL(fileURLWithPath: videoPath!)

Alamofire.upload(
.POST,
URLString: fullUrl, // http://httpbin.org/post
multipartFormData: { multipartFormData in
multipartFormData.appendBodyPart(fileURL: imagePathUrl!, name: "photo")
multipartFormData.appendBodyPart(fileURL: videoPathUrl!, name: "video")
},
encodingCompletion: { encodingResult in
switch encodingResult {
case .Success(let upload, _, _):
upload.responseJSON { request, response, JSON, error in

}
}
case .Failure(let encodingError):

}
}
)

最佳答案

我终于找到了解决方案 :)。

我们可以在请求中附加数据作为 multipartformdata。

下面是我的代码。

  Alamofire.upload(
.POST,
URLString: fullUrl, // http://httpbin.org/post
multipartFormData: { multipartFormData in
multipartFormData.appendBodyPart(fileURL: imagePathUrl!, name: "photo")
multipartFormData.appendBodyPart(fileURL: videoPathUrl!, name: "video")
multipartFormData.appendBodyPart(data: Constants.AuthKey.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"authKey")
multipartFormData.appendBodyPart(data: "\(16)".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"idUserChallenge")
multipartFormData.appendBodyPart(data: "comment".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"comment")
multipartFormData.appendBodyPart(data:"\(0.00)".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"latitude")
multipartFormData.appendBodyPart(data:"\(0.00)".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"longitude")
multipartFormData.appendBodyPart(data:"India".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"location")
},
encodingCompletion: { encodingResult in
switch encodingResult {
case .Success(let upload, _, _):
upload.responseJSON { request, response, JSON, error in


}
case .Failure(let encodingError):

}
}
)

编辑 1: 对于那些试图发送数组而不是 float 、整数或字符串的人,他们可以将数组或任何类型的数据结构转换为 Json 字符串,传递此 JSON 字符串作为一个普通的字符串。并在后端解析这个json字符串得到原始数组

关于ios - 在 iOS Swift 中使用 Alamofire 发送带有 MultipartFormData 的 POST 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31949118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com