Dio 没有响应关闭的 API

Posted

技术标签:

【中文标题】Dio 没有响应关闭的 API【英文标题】:Dio not responding to closed API 【发布时间】:2021-05-23 18:26:48 【问题描述】:

我使用 API 来处理登录和存储令牌。如果凭据有效,响应将获得一个令牌,如果凭据无效,则返回一个错误。现在它工作正常,我得到了令牌,如果有错误,catch 方法会显示它,但是当我关闭 API 并发出 POST 请求时,我根本没有得到任何响应。如何处理与 DIO 的连接错误?

Future<bool> login(String email, String password) async 
  try 
    var data = 
      'email': email,
      'password': password,
      'device_name': 'mobile'
    ;
    Response response = await _dio.post(
      url + 'sanctum/token',
      data: data,
      options: Options(
        headers: 
          'Accept': 'application/json',
        ,
      ),
    );
    await _storage.write(key: 'token', value: response.toString());
    return true;
   catch (e) 
    print(e.response.toString());
    return false;
  

【问题讨论】:

有错误日志吗? 没有。没有@PreetShah 那么,你怎么知道它不起作用?如果出现任何连接错误,Dio 会返回错误。 【参考方案1】:

尝试使用finally而不是catch返回false

Future<bool> login(String email, String password) async 
  try 
    // Make the request here like you already are
    return true;
   catch (e) 
    print(e.response.toString());
   finally 
    // This wouldn't get called if you already returned from the try block before, 
    // but would get called after catch if an exception was caught.
    return false; 
  

【讨论】:

以上是关于Dio 没有响应关闭的 API的主要内容,如果未能解决你的问题,请参考以下文章

DIO 响应解码问题

等待 api 中的空响应

Port.Readline() 没有响应。为啥? [关闭]

Android Emulator 不时显示“系统 UI 没有响应”对话框

在颤动中没有得到正确的 api 响应

我的网页没有响应[关闭]