Swift-POST请求总是出现错误的格式问题

时间:2019-11-17 02:14:47

标签: ios swift post

我正在尝试使用JSON正文向我的服务器发送POST请求。

这是Swift中的代码:

static func request(urlString: String, parameters: [String:Any], completion: @escaping (Error?, NSDictionary?)->()) {                       

            guard let url = URL(string: urlString) else { return }

            var request = URLRequest(url: url)
            request.httpMethod = "POST"
            request.addValue("application/json", forHTTPHeaderField: "Content-Type")
            request.addValue("application/json", forHTTPHeaderField: "Accept")
            request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")

            guard let postData = try? JSONSerialization.data(withJSONObject: parameters, options: .fragmentsAllowed) else {
                return
            }

            request.httpBody = postData

            URLSession.shared.dataTask(with: request) { (data, response, error) in
                DispatchQueue.main.async {
                    if let error = error {
                        completion(error, nil)
                        return
                    }
                    do {
                        guard let data = data else {
                            return
                        }
                        let json = try JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary
                        guard let parsedJSON = json else {
                            completion(nil, nil)
                            return
                        }
                        completion(nil, parsedJSON)
                    } catch {
                        completion(error, nil)
                    }
                }
            }.resume()
        }

我这样使用它:

let parametersDict = [
    "userEmail": "1@1.com",
]

Helper.Network.request(urlString: "https://myapiurl.com/getInfo", parameters: parametersDict) { (error, json) in
            ......
        }

运行此命令后,总是出现错误。我已经使用工具测试了api服务器,并且可以正常工作。所以问题不在于我的api服务器。 然后,我尝试打印出我的api服务器收到的请求,并在运行swift代码时显示了这一点:

array(1) {
  ["{"userEmail":"1@1_com"}"]=>
  string(0) ""
}

这不是正确的格式。 相反,以下是我使用其他工具发布时服务器得到的信息,这是正确的:

array(1) {
  ["userEmail"]=>
  string(7) "a@a.com"
}

我在哪里做错了? 谢谢!

0 个答案:

没有答案