flutter - 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.
解决方案
在我的情况下(有时而不是空白出现错误“HttpException:在收到完整标头之前连接关闭”)调用是使用 Microsoft Internet Information Services 作为后端的 https 地址,在 IIS 中网站的 SSL 设置中我错误地设置“客户端证书:接受”而不是“客户端证书:忽略”,设置“忽略”解决了问题。
推荐阅读
- oauth - 如何设置 Airflow DAG 权限以查询基于 Google Sheets 文档构建的 BigQuery 表?
- c - 在 C 中存储和迭代存储的值
- godot - nixos mkDerivation godot 单声道版本(C# 支持)
- python - 如何使用 asyncio/aiohttp 确定最佳缓冲区大小
- apache-httpclient-4.x - 两个互联网上的 HttpClient 连接池
- regex - 不允许正则表达式 大写字母后跟小写字母后跟数字后跟特殊字符
- windows - 通过文件夹共享时程序在哪里运行?
- java - Cassandra Key 可能不是空的错误。字节缓冲区
- java - 如何将 Spinner 用作 ACTION 而不是 SELECTION?
- javascript - 如何在 React 中获取通过 dangerouslySetInnerHTML 添加的子标签的引用