我没有收到任何 Flutter 响应

juzqafwq  于 2023-01-02  发布在  Flutter
关注(0)|答案(1)|浏览(122)

当我用postman测试php代码时,我得到的答案是“success”。但是当我们用flutter测试时,代码没有进入if结构或else结构,打印不起作用。我尝试不使用json_encode,但它仍然不起作用。当我用Dio测试时,我再次看到同样的无响应。我该怎么办?

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

import 'login.dart';

abstract class LoginViewModel extends State<Login> {
  final TextEditingController email_controller = TextEditingController();
  final TextEditingController pass_controller = TextEditingController();
  Future<void> fetchLogin() async {
    try {
      final response = await http.post(Uri.parse("http://********/canlidestek/login.php"),
          body: {"email": email_controller.text, "password": pass_controller.text});

      if (response.statusCode == 200) {
        var data = json.decode(response.body);
        print(data);
      }
    } catch (e) {
      print(e);
    }
  }
}

PHP语言

<?php 
    session_start();
    include_once "config.php";
    if($_POST){
        $email = $_POST['email'];
    $password = $_POST['password'];
    if(!empty($email) && !empty($password)){
        $sql = mysqli_query($conn, "SELECT * FROM livesup WHERE email = '{$email}'");
        if(mysqli_num_rows($sql) > 0){
            $row = mysqli_fetch_assoc($sql);
    
                $status = "Online";
                $sql2 = mysqli_query($conn, "UPDATE livesup SET status = '{$status}' WHERE unique_id = {$row['unique_id']}");
                if($sql2){
                    $_SESSION['unique_id'] = $row['unique_id'];
                    echo json_encode("success");
                }else{
                    echo "Something went wrong. Please try again!";
                }
        
        }else{
            echo "$email - This email not Exist!";
        }
    }else{
        echo "All input fields are required!";
    }
    }else
    {
            echo "no data post";

    }
?>
k7fdbhmy

k7fdbhmy1#

描述

由于您没有使用在线服务器,并且api在post man上运行良好,我们可以说问题出在您的android设备和php服务器(Xampp)之间,也就是您的笔记本电脑。

首先尝试的解决方案:

如果您在flutter代码上使用本地主机,请将其更改为笔记本电脑IP地址,Android设备和笔记本电脑必须在同一网络上。

如果第一个解决方案不起作用,则使用第二个解决方案:

你必须确保关闭windows防火墙,在某些情况下它会阻止请求。
并确保您的服务器可从外部设备访问。

相关问题