【发布时间】:2020-08-08 02:36:09
【问题描述】:
好吧,我在这里疯了, 在我的颤振应用程序中,我正在使用此功能来执行发布请求:
Future<Map> postRequest(String serviceName, Map<String, dynamic> data) async {
var responseBody = json.decode('{"data": "", "status": "NOK"}');
try {
http.Response response = await http.post(
_urlBase + '$_serverApi$serviceName',
body: jsonEncode(data),
);
if (response.statusCode == 200) {
responseBody = jsonDecode(response.body);
//
// If we receive a new token, let's save it
//
if (responseBody["status"] == "TOKEN") {
await _setMobileToken(responseBody["data"]);
// TODO: rerun the Post request
}
}
} catch (e) {
// An error was received
throw new Exception("POST ERROR");
}
return responseBody;
}
问题是:
-
我得到一个 ClientException(不是每次)
-
在另一个类中,我将此函数的结果存储在一个变量中,它应该返回一个
Future<Map<dynamic, dynamic>>,当我打印它时它显示:I/flutter ( 9001): Instance of 'Future<Map<dynamic, dynamic>>'
但是当我直接(不使用函数)运行相同的发布请求时,它工作了,它显示了我正在等待的消息。
注意:在这两种情况下(功能与否),在服务器端都是一样的。
这是我使用 post 请求的函数:
void _confirm() {
if (_formKey.currentState.saveAndValidate()) {
print(_formKey.currentState.value);
var v = auth.postRequest("se_connecter", _formKey.currentState.value);
print(v);
} else {
print(_formKey.currentState.value);
print("validation failed");
}
}
【问题讨论】:
-
为什么不能设置 headers 字段,你导入的是正确的包吗?
-
抱歉,问题似乎不在于 headers 字段,而在于请求本身。
-
这样就解决了?如果是,请发布答案
-
当我得到 ClientException 时,我捕获它并被调试器忽略,然后请求工作,但如果我直接使用相同的请求并打印结果,它会显示我的消息等待,当我使用该函数(包含相同的代码)执行此操作时,它显示
I/flutter ( 9001): Instance of 'Future<Map<dynamic, dynamic>>' -
对不起,我不能再关注你了,你现在有什么问题,在你的问题中你写了 2 个问题,但在上面的评论中你说一个已经解决,另一个没有?
标签: http flutter http-headers http-post