У меня проблема при попытке отправить POST-запрос на мой API на моем сервере, я следил за множеством разных учебников, но он по-прежнему не работает. Я знаю, что моя проблема связана с запросом POST, но я не могу ее решить! Итак, это мой код в Swift и мой API в php: (и да, я заменил xxxx на реальные идентификаторы в моем коде)POST с быстрым и API
Подводя итог серверу, получите запрос и, например, псевдо это работает, это действительно метод POST, который не работает .. сервер не принимает параметр POST
Swift код:
var request = NSMutableURLRequest(URL: NSURL(string: "http://localhost:8888/academy/test.php")!)
var session = NSURLSession.sharedSession()
request.HTTPMethod = "POST"
var params = ["pseudo":"test"] as Dictionary<String, String>
var err: NSError?
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &err)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
var task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
println("Response: \(response)")
var strData = NSString(data: data, encoding: NSUTF8StringEncoding)
println("Body: \(strData)")
var err: NSError?
var json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error: &err) as? NSDictionary
// Did the JSONObjectWithData constructor return an error? If so, log the error to the console
if(err != nil) {
println(err!.localizedDescription)
let jsonStr = NSString(data: data, encoding: NSUTF8StringEncoding)
println("Error could not parse JSON: '\(jsonStr)'")
}
else {
// The JSONObjectWithData constructor didn't return an error. But, we should still
// check and make sure that json has a value using optional binding.
if let parseJSON = json {
// Okay, the parsedJSON is here, let's get the value for 'success' out of it
var success = parseJSON["success"] as? Int
println("Succes: \(success)")
}
else {
// Woa, okay the json object was nil, something went worng. Maybe the server isn't running?
let jsonStr = NSString(data: data, encoding: NSUTF8StringEncoding)
println("Error could not parse JSON: \(jsonStr)")
}
}
})
task.resume()*/
PHP код:
$BDD_hote = 'xxxxx';
$BDD_bd = 'xxxxx';
$BDD_utilisateur = 'xxxxx';
$BDD_mot_passe = 'xxxxx';
try{
$bdd = new PDO('mysql:host='.$BDD_hote.';dbname='.$BDD_bd, $BDD_utilisateur, $BDD_mot_passe);
$bdd->exec("SET CHARACTER SET utf8");
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
}
catch(PDOException $e){
echo 'Erreur : '.$e->getMessage();
echo 'N° : '.$e->getCode();
}
$pseudo = addslashes($_POST["pseudo"]);
$req = $bdd->query("SELECT * from users WHERE pseudo='$pseudo'");
$resultArray = array();
$donnees = $req->fetch();
echo json_encode($donnees);
Спасибо заранее :)
Просьба немного подробнее о «не работает»? С самого начала и дальше, какой шаг не дает вам ожидаемого результата. Сервер вообще не получил запрос? – kcome
Таким образом, сервер получает запрос и, например, если я вручную ввел псевдо, он работает. Это действительно метод POST, который не работает. Сервер не получает параметр POST – sebasthug
Кстати, второстепенную точку, но см. документацию '' addSlashes '' (http://php.net/manual/en/function.addslashes.php), которая советует вам использовать ['mysqli_real_escape_string'] (http://php.net/manual/en/mysqli .real-escape-string.php). – Rob