使用Python进行网络请求很容易,而getResponse(String url) async {
HttpClient httpClient = new HttpClient();
HttpClientRequest request = await httpClient.getUrl(Uri.parse(url));
HttpClientResponse response = await request.close();
String responseBody = await response.transform(utf8.decoder).join();
Map jsonResponse = jsonDecode(responseBody) as Map;
httpClient.close();
return jsonResponse;
}
请求就变得很容易。
在Dart中,我可以这样请求:
getResponse
显然是异步请求。我认为上述代码可以重复使用多次。 所以我想发出请求并返回一个JSON对象。
Future<dynamic>
如您所见,以上方法{{1}}返回{{1}}。那么,如何调用它并获取json值呢?
答案 0 :(得分:2)
要从Future内部获得动态,请执行以下操作之一:
if(property_exists($stdClass,"order"))
{
echo $stdClass->order;
}
请注意,您自己的异步方法也可以返回 // option 1 async method
MyAsyncMethod() async {
dynamic result = await getResponse("http://google.com");
if (result is Map) {
// process the data
}
}
// option 2 callback with .then()
MyNonAsyncMethod() {
getResponse("http://google.com").then ( (dynamic result) {
if (result is Map) {
// process the data
}
});
}
并在调用时以相同的两种方式处理。
其中映射是嵌套的Future<something>
,结果是您创建的对象的类型,该对象符合Json序列化接口(请参见此link)。
要访问地图中的数据:
Map<String, Dynamic>