[英]How to get token from server in flutter?
我想向服务器发送一些数据,但出现此错误:
E/flutter (18058): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: DioError [DioErrorType.RESPONSE]: Http status error [403]
E/flutter (18058): #0 DioMixin._dispatchRequest (package:dio/src/dio.dart:966:7)
这是我的代码:
RaisedButton(
onPressed: () async {
final url = 'https://www.badam.af/wp-json/jwt-auth/v1/token';
Dio dio = new Dio();
final response = await dio.post(
url,
data: {
'username': "admin",
'password': "mahdi@raham786",
},
);
print("Mahdi: " + response.data);
},
child: Text("button"),
),
我将这些权限添加到清单文件中:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
而且我的 URL 在 Postman 中也可以正常工作,但是在 flutter 中不起作用,请帮助我。
尝试使用FormData.fromMap
。 例如。
var data = {
'username': "admin",
'password': "mahdi@raham786",
};
var response = await dio.post(url, data:FormData.fromMap(data));
您的错误消息表明 API 调用返回Http status error [403]
任何 HTTP 调用都需要处理成功的响应和失败的响应。
对于您的代码,您可以简单地通过try-catch
和处理异常/错误来做到这一点。 此外,您的 API 似乎期望表单数据不是 json 对象。 请参阅下面的代码片段,这应该对您的需要有所帮助。
var response;
try {
FormData formData = new FormData.fromMap({
"username": "admin",
"password": "mahdi@raham786",
});
response = await dio.post(
url,
data: formData,
);
// FIXME: use the response as you need
} catch (e) {
// FIXME: handle error cases here
print(e);
}
我解决了我的问题,发生此错误是因为我的 IP 被阻止
E/flutter (18058): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: DioError [DioErrorType.RESPONSE]: Http status error [403]
E/flutter (18058): #0 DioMixin._dispatchRequest (package:dio/src/dio.dart:966:7)
我在手机上安装了 VPN,问题得到解决。 感谢我的朋友们的回复。 (-;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.