SyntaxError: Unexpected end of JSON input in Flutter
SyntaxError: Unexpected end of JSON input in Flutter
我正在尝试为我的 flutter 应用程序建立一个注册后端。为了做到这一点,我有这个 class:
class _MyHomePageState extends State<MyHomePage> {
bool verifyButton = false;
TextEditingController user = TextEditingController();
TextEditingController pass = TextEditingController();
String verifylink;
Future signUp() async {
if (user.text.isNotEmpty) {
var response = await http.post(
'https://mydomammmmmmmin.com/signup.php',
body: {"username": user.text, "password": pass.text});
var link = json.decode(response.body);
verifylink = link;
sendMail();
setState(() {
verifyButton = true;
});
//print(verifylink);
showToast(
"Thanks for registering with Flutter localhost. Please click this link to complete this registation",
duration: 4,
gravity: Toast.CENTER);
} else {
showToast("Enter Username and password first",
duration: 3, gravity: Toast.TOP);
}
}
但是,当我按下按钮时,这个问题总是出现:
Error: FormatException: SyntaxError: Unexpected end of JSON input
at Object.throw_ [as throw] (http://localhost:54346/dart_sdk.js:5340:11)
at Object._parseJson (http://localhost:54346/dart_sdk.js:49770:19)
at JsonDecoder.convert (http://localhost:54346/dart_sdk.js:47520:22)
at JsonCodec.decode (http://localhost:54346/dart_sdk.js:47217:48)
at main._MyHomePageState.new.signUp (http://localhost:54346/packages/ftesty/Welcome.dart.lib.js:1821:35)
at signUp.next (<anonymous>)
注意:我也认为问题出在 php 文件中,所以这是我的 php 注册文件:
<?php
$db = mysqli_connect("localhost","db_","","dbuser");
if(!$db){
echo "Database connect error".mysqli_error();
}
$username = $_POST['username'];
$password = $_POST['password'];
$token = md5(rand('10000', '99999'));
$insert = $db->query("INSERT INTO login(username,password,token)VALUES('".$username."','".$password."','".$token."')");
if($insert){
$lastId = mysqli_insert_id($db);
$url = 'http://'.$_SERVER['SERVER_NAME'].'/mydommmain.com/verify.php?id='.$lastId.'&token='.$token;
echo json_encode($url);
}
mm 我不确定,知道吗?
在使用 http Post.
之前,您必须将正文编码为 json
使用body: jsonEncode({"username": user.text, "password": pass.text}));
并且在使用 get 或收听响应时,您 jsonDecode(response.body)
.
试试这个你需要添加 json.encode
到 body
var response = await http.post(Uri.parse("https://mydomammmmmmmin.com/signup.php"),
headers: {"Content-Type": "application/json"},
body: json.encode({
"username": user.text,
"password": pass.text,
}));
print("response menu " + response.body.toString());
我正在尝试为我的 flutter 应用程序建立一个注册后端。为了做到这一点,我有这个 class:
class _MyHomePageState extends State<MyHomePage> {
bool verifyButton = false;
TextEditingController user = TextEditingController();
TextEditingController pass = TextEditingController();
String verifylink;
Future signUp() async {
if (user.text.isNotEmpty) {
var response = await http.post(
'https://mydomammmmmmmin.com/signup.php',
body: {"username": user.text, "password": pass.text});
var link = json.decode(response.body);
verifylink = link;
sendMail();
setState(() {
verifyButton = true;
});
//print(verifylink);
showToast(
"Thanks for registering with Flutter localhost. Please click this link to complete this registation",
duration: 4,
gravity: Toast.CENTER);
} else {
showToast("Enter Username and password first",
duration: 3, gravity: Toast.TOP);
}
}
但是,当我按下按钮时,这个问题总是出现:
Error: FormatException: SyntaxError: Unexpected end of JSON input
at Object.throw_ [as throw] (http://localhost:54346/dart_sdk.js:5340:11)
at Object._parseJson (http://localhost:54346/dart_sdk.js:49770:19)
at JsonDecoder.convert (http://localhost:54346/dart_sdk.js:47520:22)
at JsonCodec.decode (http://localhost:54346/dart_sdk.js:47217:48)
at main._MyHomePageState.new.signUp (http://localhost:54346/packages/ftesty/Welcome.dart.lib.js:1821:35)
at signUp.next (<anonymous>)
注意:我也认为问题出在 php 文件中,所以这是我的 php 注册文件:
<?php
$db = mysqli_connect("localhost","db_","","dbuser");
if(!$db){
echo "Database connect error".mysqli_error();
}
$username = $_POST['username'];
$password = $_POST['password'];
$token = md5(rand('10000', '99999'));
$insert = $db->query("INSERT INTO login(username,password,token)VALUES('".$username."','".$password."','".$token."')");
if($insert){
$lastId = mysqli_insert_id($db);
$url = 'http://'.$_SERVER['SERVER_NAME'].'/mydommmain.com/verify.php?id='.$lastId.'&token='.$token;
echo json_encode($url);
}
mm 我不确定,知道吗?
在使用 http Post.
之前,您必须将正文编码为 json使用body: jsonEncode({"username": user.text, "password": pass.text}));
并且在使用 get 或收听响应时,您 jsonDecode(response.body)
.
试试这个你需要添加 json.encode
到 body
var response = await http.post(Uri.parse("https://mydomammmmmmmin.com/signup.php"),
headers: {"Content-Type": "application/json"},
body: json.encode({
"username": user.text,
"password": pass.text,
}));
print("response menu " + response.body.toString());