我是Dart / Flutter的新手,我试图获得使用Web服务的未来的结果:
Future<Map> _readData() async {
(...)
http.Response response = await http.post(
request,
headers: {
"SOAPAction": "http://www.totvs.com/IwsConsultaSQL/RealizarConsultaSQL",
"Content-Type": "text/xml;charset=UTF-8",
"Authorization": "Basic bWVzdHJlOnRvdHZz",
"cache-control": "no-cache"
},
body: utf8.encode(requestBody),
encoding: Encoding.getByName("UTF-8")
).then((onValue){
(...)
var dataFinal = jsonDecode(jsondataFinal);
return dataFinal ;
});
在初始化状态下,我调用此函数,因此可以使用此结果构建布局:
@override
void initState () {
super.initState();
_readData().then((data){
setState(() {
print(data);
});
});
}
我总是会遇到此异常:
_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'FutureOr<Response>'
关于我在做什么错的任何想法?
谢谢
答案 0 :(得分:1)
此代码会显示此错误吗?
<?php
if (!isset($_SESSION)) {
session_start();
echo session_status();
echo "SessionID: ".session_id();
}
echo "SessionID: ".session_id();
?>
答案 1 :(得分:1)
您不能同时使用await。您的代码应如下所示
Future<Map> _readData() async {
(...)
http.Response response = await http.post(
request,
headers: {
"SOAPAction": "http://www.totvs.com/IwsConsultaSQL/RealizarConsultaSQL",
"Content-Type": "text/xml;charset=UTF-8",
"Authorization": "Basic bWVzdHJlOnRvdHZz",
"cache-control": "no-cache"
},
body: utf8.encode(requestBody),
encoding: Encoding.getByName("UTF-8")
);
var dataFinal = jsonDecode(response.body);
return dataFinal ;
}