【问题标题】:How to Post Data in Amazon Web Services swift?如何在 Amazon Web Services 中快速发布数据?
【发布时间】:2016-03-17 10:10:04
【问题描述】:

我使用此代码在“亚马逊网络服务”中快速发布数据。

            let userNameData =  String("prnty").dataUsingEncoding(NSASCIIStringEncoding)!
            let passData =  String("xxx").dataUsingEncoding(NSASCIIStringEncoding)!
            let tokenData =  String("xxxxxx").dataUsingEncoding(NSASCIIStringEncoding)!
            let deviceTypeData =  String("ios").dataUsingEncoding(NSASCIIStringEncoding)!

            Alamofire.upload(
                .POST,
                "https://xxxxx.execute-api.ap-southeast-1.amazonaws.com/dev/webserv",
                headers:["x-api-key":"xxxxxxxxx"],
                multipartFormData: { multipartFormData in

                    multipartFormData.appendBodyPart(data: userNameData, name: "username")
                    multipartFormData.appendBodyPart(data: passData, name: "password")
                    multipartFormData.appendBodyPart(data: tokenData, name: "token")
                    multipartFormData.appendBodyPart(data: deviceTypeData, name: "deviceType")
                },
                encodingCompletion: { encodingResult in
                    switch encodingResult {
                    case .Success(let upload, _, _):
                        upload.responseJSON { response in
                           print(response)

                        }
                    case .Failure(let encodingError):

                    print(encodingError)

                    }
                }
            )

我能够成功地通过 AWS 服务器进行身份验证,但是。似乎数据没有进一步我的服务器。OKClient 在 Android 中运行良好 没有获取发布数据(iOS 获取零 POST 数据)*可能是什么错误?

【问题讨论】:

  • 您可能希望从此代码 sn-p 中删除您的 x-api-key 值(可能还有确切的 URL)。
  • 感谢您的回复。但删除“x-api-key”无法访问我们的服务器
  • 您应该删除 api 密钥,因为其他人可以使用它并且可能存在安全风险;)
  • 似乎您正在使用 multipart/form-data 发布数据,但您的服务器是否期望它?通常,除了文件上传之外的发布数据不使用它。 stackoverflow.com/questions/28526743/…
  • @Nori。我需要适用于 ios 的 aws 框架吗?我没有在其中找到任何 POST 请求 api。有什么帮助吗?

标签: ios swift amazon-web-services


【解决方案1】:

如果您的服务器希望接收 application/json,则以下方法可以正常工作:

let headers = ["x-api-key": "xxxxxxxxx"]

let parameters = [
    "userNameData": "prnty",
    "passData": "xxx",
    "tokenData": "xxxxxx",
    "deviceTypeData": "ios"
]

Alamofire.request(.POST, "https://xxxxx.execute-api.ap-southeast-1.amazonaws.com/dev/webserv", headers: headers, parameters: parameters, encoding: .JSON)
    .responseJSON { response in
        print(response.request)  // original URL request
        print(response.response) // URL response
        print(response.data)     // server data
        print(response.result)   // result of response serialization

        if let JSON = response.result.value {
            print("JSON: \(JSON)")
        }
}

如果不是,则不需要使用编码参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-30
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    相关资源
    最近更新 更多