У меня проблема с запросом POST в Alamofire. Если я пытаюсь сделать POST-запрос, кажется, что PHP-скрипт не получает значения. Это мой POST запрос:
func userRegistration(){
let url = "http://offlineshopper.sunpowr.de/register.php"let parameters: [String:String] = ["nickname":RegisterTexts.nickname, "password":RegisterTexts.password, "email":RegisterTexts.email]
print(parameters)
Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseJSON{ response in
if((response.result.value) != nil){
let swiftyJsonVar = JSON(response.result.value!)
print("Das kommt dabei raus: \(swiftyJsonVar)")
}
}
}
Словарь параметров распечатывает это: [«ник»: «Тест», «пароль»: «Тест», «электронная почта»: «Тест»]
Поэтому я думаю, что это правильно.
Вот мой PHP скрипт:
<?php
include("mysql_connect.php");
if(isset($_POST['nickname'])){
$nickname = $_POST['nickname'];
}
if(isset($_POST['password'])){
$password = $_POST['password'];
}
if(isset($_POST['email'])){
$email = $_POST['email'];
}
//Check if nickname is already used
$select = "SELECT `nickname` FROM `User` WHERE nickname = '$nickname'";
$result = mysqli_query($link, $select);
if (!$result){
$returnArray["message"] = "Fehler in der Datenbank!";
json_encode($returnArray);
}
if (mysqli_num_rows($result) != 0){
$returnArray["message"] = "Nickname bereits vorhanden!";
json_encode($returnArray);
}
//Add new User to the database
$sql = "INSERT INTO User (nickname, password, email) VALUES ('$nickname', '$password', '$email')";
if(mysqli_query($link, $sql)){
$returnArray["message"] = "Erfolgreich registriert!";
echo json_encode($returnArray);
}
else{
mysqli_error($link);
$returnArray["message"] = "Fehler!";
echo json_encode($returnArray);
}
mysqli_close($link)
?>
Я получаю ответ «Erfolgreich registriert» в моем приложении, поэтому все должно работать нормально. Я также получаю новые наборы данных в моей базе данных. Проблема в том, что в базе данных установлен только идентификатор, который является автоматическим приращением. Остальные поля пусты, поэтому переменные POST никогда не сохраняются в базе данных. Есть идеи, что я здесь делаю неправильно?
РЕДАКТИРОВАТЬ: это работает сейчас, просто переключение
Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseJSON
с
Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.httpBody).responseJSON
Задача ещё не решена.
Других решений пока нет …