首页 > 解决方案 > http请求中的flutter ClientException

问题描述

这是包含请求的函数:

Future<String> getRequest(String serviceName, Map<String, String> a) async {
  var responseBody = '{"data": "", "status": "NOK"}';
  try {
    http.Response response =
        await http.get(_urlBase + '$_serverApi$serviceName', headings: a);

    if (response.statusCode == 200) {
      responseBody = response.body;
    }
  } catch (e) {
    // An error was received
    throw new Exception("GET ERROR");
  }
  return responseBody;
}

这就是我所说的:

void _confirm() async {
    if (_formKey.currentState.saveAndValidate()) {
      print(_formKey.currentState.value);
      Map<String, String> c =
          Map<String, String>.from(_formKey.currentState.value);
      // just below
      var a = await auth.getRequest('se_connecter', c);

      print(a);
    } else {
      print(_formKey.currentState.value);
      print("validation failed");
    }
}

每次我尝试它时,try bloc 中的代码都会失败,它会抛出异常(我删除 try 和 catch bloc 后的 ClientException)

这是异常堆栈跟踪:

I/flutter (10979): #0      IOClient.send 
package:http/src/io_client.dart:65
I/flutter (10979): <asynchronous suspension>
I/flutter (10979): #1      BaseClient._sendUnstreamed 
package:http/src/base_client.dart:176
I/flutter (10979): #2      BaseClient.get 
package:http/src/base_client.dart:35
I/flutter (10979): #3      get.<anonymous closure> 
package:http/http.dart:46
I/flutter (10979): #4      _withClient 
package:http/http.dart:166
I/flutter (10979): #5      get 
package:http/http.dart:46
I/flutter (10979): #6      getRequest 
package:event_app/auth.dart:125
I/flutter (10979): #7      ConnectPageState._confirm 
package:event_app/pages/connect_page.dart:28
I/flutter (10979): #8      _InkResponseState._handleTap 
package:flutter/…/material/ink_well.dart:706
I/flutter (10979): #9      _InkResponseState.build.<anonymous closure> 
package:flutter/…/material/ink_well.dart:789
I/flutter (10979): #10     GestureRecognizer.invokeCallback 
package:flutter/…/gestures/recognizer.dart:182
I/flutter (10979): #11     TapGestureRecognizer.handleTapUp 
package:flutter/…/gestures/tap.dart:486
I/flutter (10979): #12     BaseTapGestureRecognizer._checkUp 
package:flutter/…/gestures/tap.dart:264
I/flutter (10979): #13     BaseTapGestureRecognizer.

标签: flutter

解决方案


在我的情况下(有时而不是空白出现错误“HttpException:在收到完整标头之前连接关闭”)调用是使用 Microsoft Internet Information Services 作为后端的 https 地址,在 IIS 中网站的 SSL 设置中我错误地设置“客户端证书:接受”而不是“客户端证书:忽略”,设置“忽略”解决了问题。


推荐阅读