@trickster2019

Как объединить post и get запрос в Flutter?

Делаю регистрация в приложении, и хочу что бы при регистрации возвращались все данные созданного юзера(на сервера автоматически создаются token и id), есть функция отправки данных на сервер
Future _createUser(BuildContext context) async {
    return await http.post(
      Uri.parse("http://217.71.129.139:4800/create_user.php"),
      body: {
        "name": _nameController.text,
        "mail": _mailController.text,
        "password": _passwordController.text,
      },
    );
  }

а также функция заполнения класса пришедшимся данными
class RemoteService {
  Future<List<User>?> getPosts() async {
    var client = http.Client();

    var uri = Uri.parse('http://217.71.129.139:4800/all_user.php');
    var response = await client.get(uri);
    if (response.statusCode == 200) {
      var json = response.body;
      return postFromJson(json);
    }
  }
}

php код создания пользователя
<?php
require_once 'config.php';

try {
        $db = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASS);
} catch(PDOException $e) {
        print "Error!: " . $e->getMessage();
        die();
}

$result='{"response":';
if (isset ($_POST['name']) && isset ($_POST['mail']) && isset ($_POST['password'])){
        $name = $_POST['name'];
        $mail = $_POST['mail'];
        $password = $_POST['password'];

        $token = md5(time());
        $sql_create_user= 'INSERT INTO `User_db` (`NAME`, `MAIL`, `PASSWORD`, `TOKEN`) VALUES (:name, :mail, :password, :token)';
        $stmt=$db->prepare($sql_create_user);
        $stmt->bindValue(":name", $name);
        $stmt->bindValue(":mail", $mail);
        $stmt->bindValue(":password", $password);
        $stmt->bindValue(":token", $token);
        $stmt->execute();

        $sql_id_user='SELECT LAST_INSERT_ID() AS LAST_ID';
        $stmt = $db->query($sql_id_user);
        $row = $stmt->fetch();
        $id = $row['LAST_ID'];

        $result.=sprintf('{"id":%d, "email":"%s","name":"%s", "token":"%s"}}', $id, $mail, $name, $token);

}else{
        $result='{"error":{"не переданы данные"}}';
        die($result);
}



echo $result
?>

но я не понимаю как это всё объединить, посмотрел на странице пакета http, толи там нет примера как это делать поли в глаза долблюсь
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
@VadimFox
http.post так же как и get имеет данные об ответе сервере.
То есть на сервере делаем: echo $result;
А на клиенте:
Map<String, dynamic> response = json.decode(response.body)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы