如何从服务器中获取令牌?

时间:2020-09-12 09:56:52

标签: android flutter dart

我想向服务器发送一些数据,但出现此错误:

    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 Image

3 个答案:

答案 0 :(得分:3)

尝试使用FormData.fromMap。例如。

var data = {
            'username': "admin",
            'password': "mahdi@raham786",
          };
var response = await dio.post(url, data:FormData.fromMap(data));

https://pub.dev/packages/dio#sending-formdata

答案 1 :(得分:2)

您的错误消息表明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);
}

答案 2 :(得分:0)

我已解决问题,因为我的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,问题已解决。 感谢我的朋友们的回复。 (-;