我正在尝试使用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"
}
我在哪里做错了? 谢谢!