Я хочу отправлять сообщения от клиента к серверу. На стороне клиента я использую flutter, а на стороне сервера - nodejs. Проблема в том, что я не могу выполнить действие публикации. Но если жестко закодировать маршрут со значением параметра, я могу отправить данные на сервер.
stati c String urlLogin = API.url + '/ authentication / api / login / ADMIN / 12345 ';
, но когда я использую приведенный ниже код и свойства тела, не могу отправлять данные на сервер.
stati c String urlLogin = API .url + '/ authentication / api / login /';
у моего гостя проблема с параметром ... может быть ... Я не знаю, какую ошибку я совершил. Надеюсь может помочь мне решить эту проблему.Спасибо заранее.
ОШИБКА
<code> <pre>Cannot POST /authentication/api/login
FormatException: неожиданный символ (в символе 1)
(САЙТ КЛИЕНТА)
LoginPageForm.dart
class LoginPageForm extends StatefulWidget {
LoginPageForm({Key key}) : super(key: key);
@override
_LoginPageFormState createState() => _LoginPageFormState();
}
class _LoginPageFormState extends State<LoginPageForm> {
TextEditingController _idController = TextEditingController();
TextEditingController _passwordController = TextEditingController();
final _formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
return Form(
key: _formKey,
child: Column(
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width,
child: TextFormField(
cursorColor: Colors.white,
style: TextStyle(color: Colors.white),
controller: _idController,
decoration: InputDecoration(
labelText: "No ID",
labelStyle: TextStyle(color: Colors.white),
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.white))),
validator: (value) {
if (value.isEmpty) {
return "Sila masukkan no id pengguna";
}
return null;
},
),
),
Container(
width: MediaQuery.of(context).size.width,
child: TextFormField(
cursorColor: Colors.white,
style: TextStyle(color: Colors.white),
controller: _passwordController,
decoration: InputDecoration(
labelText: "Kata Laluan",
labelStyle: TextStyle(color: Colors.white),
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.white))),
validator: (value) {
if (value.isEmpty) {
return "Sila masukkan kata laluan..";
}
return null;
},
),
),
RaisedButton.icon(
onPressed: () {
var login = new LoginPost(
userNo: _idController.text,
password: _passwordController.text);
//perform post
LoginRepository.login(login.toMap()).then((response) {
print(response);
});
},
icon: Icon(Icons.keyboard_arrow_right),
label: Text("Daftar Masuk")),
],
),
);
}
}
loginRepository.dart
class LoginRepository {
static String urlLogin = API.url + '/authentication/api/login/';
//static String urlLogin = API.url + '/authentication/api/login/ADMIN/12345';
static Future<LoginResponse> login(Map<String, dynamic> loginPost) async {
try {
final response =
await http.post(Uri.encodeFull(urlLogin), body: loginPost);
print(response.statusCode);
// if (response.statusCode == 200) {
print(response.body.toString());
return LoginResponse.fromMap(json.decode(response.body));
// } else {
// return null;
// }
} catch (e) {
print(e);
return null;
}
}
}
(СЕРВЕР САЙТ)
router.post('/api/login/:userNo/:password',(req,res)=>{
var userNo = req.params.userNo;
var password = req.params.password;
let Status;
const formData = {
userNo: userNo,
password : password
}
});