我想将POST
参数添加到我的服务器的URLSession请求中。
服务器代码:
if (isPost()) {
$response["code"] = 200;
$response["message"] = "success";
if (isset($_POST['imei']) && isset($_POST['token'])) {
$db = getDB();
$imei = $_POST['imei'];
$token = $_POST['token'];
$token = getTokenFromServer($db, $imei);
//echo $token;
}else {
$response["code"] = 400;
$response["message"] = "no params sent";
}
}else {
$response["code"] = 400;
$response["message"] = "is not post method";
}
这是Swift中的客户端代码:
guard let url = URL(string: "https://api-ru.000webhostapp.com/auth.php") else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue("text", forHTTPHeaderField: "hello")
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")
print(error)
}
}
}.resume()
我总是得到
{
code = 400;
message = "no params sent";
}
我尝试添加以下代码
request.addValue("345346343", forHTTPHeaderField: "imei")
request.addValue("sdfsdHsdlf43sdfFGsd3l", forHTTPHeaderField: "token")
但它对我没有帮助。
请帮助我如何添加参数来获取200
。
感谢。
答案 0 :(得分:0)
您可以使用request.httpBody
就像那样:
guard let url = URL(string: "https://api-ru.000webhostapp.com/auth.php") else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"
// request.addValue("text", forHTTPHeaderField: "hello")
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Accept")
let parameters = ["imei": "imeiValue", "token": "tokenValue"]
do {
request.httpBody = try JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted) // Json Body
} catch let error {
print(error.localizedDescription)
}
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")
print(error)
}
}
}.resume()