使用Alamofire将POST请求发送到API [英] Sending POST request to API using Alamofire

查看:147
本文介绍了使用Alamofire将POST请求发送到API的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,我为应用程序使用了API,该API可以帮助我存储事件的数据,在这些事件中,我会将数据发送给用户输入/选择的API进行存储,并获取ID以供以后参考. 这是我正在使用的一些代码.

So Im using an API for an app that helps me store data for events where i send data to the API entered/selected by the user store it and get back an ID to reference to later. Here is some code that Im using.

API接受的JSON

    {
   "topic":"test shedule",
   "setdate":"21-09-2017",
   "scheduledate":"22-09-2017",
   "settime":"09:00:00",
   "scheduletime":"10:00:00",
   "agenda":"hi this is test agenda",

   "adminname":"name",
   "type":"meeting",
    "users": "[{\"category\":\"optional\",\"email\":\"abc@gmail.com\"}]",
   "adminemail":"abc@gmail.com"
 }

使用Alamofire发送数据即时通讯 \

let parameters: Parameters = [
            "topic":topicTextField.text!,
            "setdate":currentDate as String,
            "scheduledate":setDate as String,
            "settime":currentTime as String,
            "scheduletime":setTime as String,
            "agenda":agendaTextField.text!,
            "adminname":"abcname",
            "type":"meeting",
            "users" : "\(smembers)",
            "adminemail":"abc@gmail.com"
        ]

        Alamofire.request("\(baseURL)meeting_shedule.php",method: .post, parameters: parameters).responseJSON { response in
            if let dict = response.result.value as? Dictionary<String, AnyObject> {
                let topic = dict["topic"] as? String
                let g_id = dict["g_id"] as? String

                self.storeMeeting(topic: topic!, g_id: g_id!)

            }
        }

smembers是根据字典selectedMembers创建的数组,而字典selectedMembers通过使用segue准备来自另一个ViewController

    var selectedMembers = [String: String]()
    var smembers = [Any]()
    var selected = [String: String]()

if selectedMembers.isEmpty == false {
            for (key, value) in selectedMembers {
                selected = ["email":key, "category":value]
                smembers.append(selected)
            }
        }

问题

我正面临api的失败响应. 我认为问题是正在向API发送用户",因为API正在以字符串形式请求数据,而我正在发送数组,我什至试图通过序列化将成员转换为jsonstring来解决此问题,但仍然返回失败.

Im facing a failure response from api. i think the problem is sending "users" to the API as the API is asking for data in string form and Im sending an array i have even tried to solve this problem by converting smembers to jsonstring by serialization but still returns failure.

我收到的错误图片

当我通过这样的邮递员发送请求时,该api起作用.

The api works when Im sending request through post man like this.

我不知道如何解决此问题,如何发送API会接受的数据.

I have no clue how to approach this problem, how to send the data that the API will accept.

感谢您的帮助

推荐答案

按如下所示更改逻辑

  var selectedMembers = [String: String]()
    var smembers = [String]()
    var selected = ""

if selectedMembers.isEmpty == false {
            for (key, value) in selectedMembers {
                selected = String(format: "{\"\\email\\\":\"\\%@\"\\,\"\\category\"\\:\"\\%@\"\\}", arguments: [key,value])
                smembers.append(selected)
            }
        }

然后输入您的帖子数据

let parameters: Parameters = [
            "topic":topicTextField.text!,
            "setdate":currentDate as String,
            "scheduledate":setDate as String,
            "settime":currentTime as String,
            "scheduletime":setTime as String,
            "agenda":agendaTextField.text!,
            "adminname":"abcname",
            "type":"meeting",
            "users" :"[\(smembers.joined(separator: ","))]",
            "adminemail":"abc@gmail.com"
        ]

这篇关于使用Alamofire将POST请求发送到API的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆