return HttpClient.findProxyFromEnvironment(url, environment: {“http_proxy”: ‘http://192.168.124.94:8888’,});
};
//请求参数设置
Map<String, String> queryParameters = {‘format’: ‘2’, ‘key’: ‘939e592487c33b12c509f757500888b5’, ‘lon’: ‘116.39277’, ‘lat’: ‘39.933748’};
var uri = Uri.http(‘v.juhe.cn’, ‘/weather/geo’, queryParameters);
var request = await httpClient.getUrl(uri);
//下面一行是post请求
//var request = await httpClient.postUrl(uri);
var response = await request.close();
if (response.statusCode == 200) {
print(‘请求成功’);
var responseBody = await response.transform(utf8.decoder).join();
print(‘responseBody = $responseBody’);
} else {
print(‘请求失败’);
}
}
以上代码中httpClient.getUrl(uri)方法即是根据uri发起get请求,post请求用法和get请求只是调用方法不同,包括参数设置等其他用法都一样。请求抓包结果如下:
- get请求
- post请求
请求成功之后以上代码输出结果如下:
I/flutter (19183): 请求成功
I/flutter (19183): responseBody={“resultcode”:“200”,“reason”:“查询成功”,“result”:{“sk”:{“temp”:“8”,“wind_direction”:“西南风”,“wind_strength”:“2级”,“humidity”:“51%”,“time”:“21:54”},“today”:{“temperature”:“1℃15℃",“weather”:“晴”,“weather_id”:{“fa”:“00”,“fb”:“00”},“wind”:“南风微风”,“week”:“星期五”,“city”:“北京”,“date_y”:“2019年03月01日”,“dressing_index”:“较冷”,“dressing_advice”:“建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。”,“uv_index”:“中等”,“comfort_index”:"",“wash_index”:“较适宜”,“travel_index”:“较不宜”,“exercise_index”:“较不宜”,“drying_index”:""},“future”:[{“temperature”:"1℃15℃”,“weather”:“晴”,“weather_id”:{“fa”:“00”,“fb”:“00”},“wind”:“南风微风”,“week”:“星期五”,“date”:“20190301”},{“temperature”:“3℃15℃",“weather”:“霾”,“weather_id”:{“fa”:“53”,“fb”:“53”},“wind”:“西南风微风”,“week”:“星期六”,“date”:“20190302”},{“temperature”:"3℃15℃”,“weather”:“霾转晴”,“weather_id”:{“fa”:“53”,“fb”:“00”},“wind”:“西南风微风”,"
由此可以看出结果输出不完整,部分字符串被丢弃了,前段时间有个同学留言问过这个问题,在这里说明一下。Flutter官方文档有这个问题的说明:
The Dart print() function output