Swift POST请求不起作用

时间:2017-09-16 17:13:27

标签: node.js swift http post

我已经使用NodeJS设置了这个服务器,它可以接收姓名和电子邮件,如果匹配则告诉我。如果收到的数据无效,我也可以告诉我。

这是我在swift中的代码:

func post() {
    let parameters = [
        "email": "windvaan@live.nl",
        "password": "Dittoenbram1234!"
    ]

    let url = NSURL(string: "http://localhost:3000/login")
    var request = URLRequest(url: url! as URL)

    request.httpMethod = "POST"

    guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: JSONSerialization.WritingOptions.prettyPrinted) else {
        return
    }

    request.httpBody = httpBody

    let session = URLSession.shared
    session.dataTask(with: request) { (data, response, error) in
        if let data = data {
            do {
                let json = try JSONSerialization.jsonObject(with: data, options: [])
                print(json)
            } catch {
                print(error.localizedDescription)
            }
        }
    }.resume()

}

当我调用此函数时,我的服务器说数据无效,但我输入的数据是参数。我相信它与此功能和参数有关,因为我的服务器工作正常。 Thx提前!

2 个答案:

答案 0 :(得分:3)

我想通了,我必须在我的swift文件中添加:

request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")

答案 1 :(得分:2)

根据您的参数值,它不是有效的JSON格式。 当您打印参数值时,它将打印 - [“密码”:“Dittoenbram1234!”,“email”:“windvaan@live.nl”],这是无效的。

你需要这种格式 - {email =“windvaan@live.nl”; password =“Dittoenbram1234!”;}

对于此

替换此 -

let parameters = [
       "email": "windvaan@live.nl",
       "password": "Dittoenbram1234!"
   ] 

有了这个 -

let parameters: NSDictionary = [
        "email": "windvaan@live.nl",
        "password": "Dittoenbram1234!"
    ] 

希望这会对你有所帮助。 :)