我正在使用顫振制作登錄應用程式。我想用郵箱和密碼登錄。如果回應為200,它將轉到另一個頁面,如果不是,它將顯示"Invalid Credential"。我的問題是即使我輸入了正確的電子郵件和密碼,我總是會收到無效的憑據。我認為我的令牌有問題。我怎么解決這個問題?這是我郵遞員的回復。
Method: POST->Body->JSON
{
"email": "[email protected]",
"password": "123456"
}
//
{
"code": 0,
"message": "success",
"data": {
"Id": 121106,
"Name": "User 1",
"Email": "[email protected]",
"Token": "55ecaa9b-0a0a-4669-b234-c7e7c88f8f41"
}
}
//
@override
Widget build(BuildContext context) {
return Scaffold(
body: Padding(
padding: const EdgeInsets.all(10.0),
child: SafeArea(
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextFormField(
controller: emailController,
decoration: const InputDecoration(
labelText: "Email",
border: OutlineInputBorder(),
suffixIcon: Icon(Icons.email)),
),
const SizedBox(height: 15,),
TextFormField(
controller: passController,
decoration: const InputDecoration(
labelText: "Password",
border: OutlineInputBorder(),
suffixIcon: Icon(Icons.email)),
),
const SizedBox(height: 15,),
OutlinedButton.icon(onPressed: () {
login();
}, icon: const Icon(Icons.login, size: 18,), label: const Text("Login")),
],
)
)
),
),
);
}
//創建函式來呼叫登錄post api
Future<void> login() async {
if(emailController.text.isNotEmpty && passController.text.isNotEmpty) {
var headers = {"Content-type": "application/json"};
var myBody = {'email' : emailController.text, 'password' : passController.text,};
var response = await http.post(Uri.parse("url"),
headers: headers,
body: utf8.encode(json.encode( myBody )));
print(response.statusCode);
print(response.body);
if(response.statusCode == 200) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const SecondRoute()));
} else {
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(content: Text("Invalid Credentials.")));
}
} else {
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(content: Text("Blank Field Not Allowed")));
}
} }
uj5u.com熱心網友回復:
檢查回應:
print(response.statusCode);
print(response.body);
設定正確的標頭,但 REST 端點可接受的標頭可能會有所不同。您需要閱讀 API 檔案。
像這樣的東西可能會起作用,但實際的內容型別可能會因 REST 端點而異:
var headers = {"Content-type": "application/json"};
var response = await http.post(Uri.parse("http://restapi.com/api/login"),
headers: headers,
body: ({
'email' : emailController.text,
'password' : passController.text,
}));
此外,可能有必要按照以下方式對正文進行編碼:
var myBody = {
'email' : emailController.text,
'password' : passController.text,
}
...
body: utf8.encode(json.encode( myBody ))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/478775.html
上一篇:如何處理BDD中的抽象給定步驟?
