当我用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";
}
?>
1条答案
按热度按时间k7fdbhmy1#
描述
由于您没有使用在线服务器,并且api在post man上运行良好,我们可以说问题出在您的android设备和php服务器(Xampp)之间,也就是您的笔记本电脑。
首先尝试的解决方案:
如果您在flutter代码上使用本地主机,请将其更改为笔记本电脑IP地址,Android设备和笔记本电脑必须在同一网络上。
如果第一个解决方案不起作用,则使用第二个解决方案:
你必须确保关闭windows防火墙,在某些情况下它会阻止请求。
并确保您的服务器可从外部设备访问。