gpt4 book ai didi

dart - 如何在Dart中访问Http请求的响应结果?

转载 作者:行者123 更新时间:2023-12-03 03:03:12 25 4
gpt4 key购买 nike

经过多次尝试在HttpRequest中获取响应的内容之后,我完全无法理解或理解为什么我没有想要的东西,而且我必须提到,我只能在onReadyStateChange(onLoad和onLoadEnd)内部记录和处理响应给我相同的结果!),但我确实希望在回调之外使用该值。

这是我坚持的代码部分

Map responsData;
req=new HttpRequest()
..open(method,url)
..send(infojson);

req.onReadyStateChange.listen((ProgressEvent e){

if (req.readyState == HttpRequest.DONE ){

if(req.status == 200){

responsData = {'data': req.responseText};
print("data receaved: ${ req.responseText}");
//will log {"data":mydata}

}
if(req.status == 0){

responsData = {'data':'No server'};
print(responsData );
//will log {"data":No server}

}
}
});
//anything here to get responsData won't work

最佳答案

在调用send之前,您必须分配一个onLoad回调。
我不确定仅在onReadyStateChange内部意味着什么。
也许您想将responseText分配给回调之外的变量。

创建一个方法:

Future<String> send(String method, String url, String infojson) {
var completer = new Completer<String>();
// var result;
req=new HttpRequest()
..open(method,url)
..onLoad.listen((event) {
//print('Request complete ${event.target.reponseText}'))
// result = event.target.responseText;
completer.complete(event.target.responseText);
})
..send(infojson);
return completer.future;
}

并像这样调用此方法

var result;
send(method, url).then(
(e) {
// result = e;
print('Request complete ${e}'));
});

关于dart - 如何在Dart中访问Http请求的响应结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19756349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com