Я пытаюсь отправить запрос POST с библиотекой Alarmofire, но запрос не отправляет параметры должным образом.
Мой код:
let parameters : Parameters = [
"email": tfLoginEmail.text! as String,
"password": tfLoginPassword.text! as String
]
Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseJSON{ response in
//Some code that uses the response
}
Переменная параметров имеет счетчик 2, и оба значения присутствуют, но ответ на этот запрос является ошибкой, если адрес электронной почты и / или пароль не указаны.
РЕДАКТИРОВАТЬ:
Мой PHP:
/**
* Account Login
* url - /login
* method - POST
* params - email, password
*/
$app->post('/login', function() use ($app) {
// check for required params
verifyRequiredParams(array('email', 'password'));
// reading post params
$email = $app->request()->post('email');
$password = $app->request()->post('password');
$response = array();
$db = new DbHandler();
// check for correct email and password
if ($db->checkLogin($email, $password)) {
// get the user by email
$account = $db->getAccountByEmail($email);
if ($account != NULL) {
$response["error"] = false;
$response['id'] = $account['id'];
$response['name'] = $account['name'];
$response['email'] = $account['email'];
} else {
// unknown error occurred
$response['error'] = true;
$response['message'] = "An error occurred. Please try again";
}
} else {
// user credentials are wrong
$response['error'] = true;
$response['message'] = 'Login failed. Incorrect credentials';
}
echoRespnse(200, $response);
});
Я хотел бы знать, что я делаю неправильно.
Заранее спасибо.
Очевидно сервер ожидает, что тело запроса будет строкой в кодировке URL, а не JSON. использование encoding: URLEncoding.httpBody
вместо encoding: JSONEncoding.default
чтобы исправить эту проблему.
Других решений пока нет …