当前位置: 首页 > 面试题库 >

在iOS Swift中使用Alamofire发送具有MultipartFormData的POST参数

于嘉许
2023-03-14
问题内容

我是第一次使用Alamofire。我正在使用最新版本的Alamofire
1.3.1。我想在一个API调用中发送一幅图像,一幅视频和一些POST参数。我正在使用多部分表单数据。mutipart模块正在工作。我在发送额外的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):

            }
        }
    )

问题答案:

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

我们可以将数据作为多部分数据添加到请求中。

下面是我的代码。

  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,int或string的用户,他们可以在Json
String中转换其数组或任何类型的数据结构,请将此JSON字符串作为普通字符串传递。并在后端解析此json字符串以获取原始数组



 类似资料:
  • 我是第一次用阿拉莫火。我使用的是最新版本的Alamofire 1.3.1。我想在一个API调用中发送一个图像,一个视频和一些POST参数。我正在使用多部分表单数据。多部分模块正在工作。我面临的问题是发送额外的POST参数。下面是我的代码。“params”是包含额外参数的字典?如何在请求中追加这些POST参数。请帮忙

  • 单击from-data或x-www-form-urlencoded 然后在键/值字段上传递两个参数。 ANDROID改装设置 原因是我使用了2个API(webapi和wcf)。我的所有其他响应都是对象数组。[{},{}]但在此呼叫中,我收到了以下信息 但我还是无法解析响应。

  • 我有一个api URL:https://orderingspace.com/api/search Body parameter:lat:48.8834553 log:2.3399433 miles:6

  • 问题内容: 我需要一个简单的代码示例,该示例发送带有从表单输入中获取的post参数的http post请求。我找到了Apache HTTPClient,它具有非常广泛的API和许多复杂的示例,但是我找不到一个简单的示例来发送带有输入参数的http post请求并获取文本响应。 更新: 我对Apache HTTPClient v.4.x感兴趣,因为不推荐使用3.x。 问题答案: 使用Apache H

  • 问题内容: 我们如何向Alamofire 4.0的上传功能添加身份验证标头? 下面是示例代码,但是我看不到向函数添加标题的方法。 先前版本的alamofire支持直接添加标头,但不支持新标头。有任何想法吗? 问题答案: 我找到了解决方案。 希望对您有帮助。

  • 问题内容: 我想使用angularjs HTTP post service发送多个参数。 这是客户端代码: 这是服务器端代码: 但是当我发表文章时,我得到了错误。知道我在做什么错吗? 问题答案: 考虑带有参数 user* 和 email 的帖子URL * params对象将是