最近写项目因为要要用到谷歌地图,需要用到一个测距的接口。
- 首先是在谷歌地图的API中开启我们需要用到的一个 Distance Matrix API
- 然后我用的是dio包去请求我们的API
import 'package:dio/dio.dart'; Dio dio = new Dio(); String YOUR_API_KEY = YOUR_API_KEY; // 这里输入你的api var origins = ''; // 初始坐标点 var destinations = '' // 结束坐标点 Response response = await dio.get( 'https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=${origins}&destinations=${destinations}&key=${YOUR_API_KEY}') print(response.data)
之后在模拟器运行一直都是超时 433,打开浏览器是能正常运行的,再者我用真机测试也 是正常的,所以问题就是出在模拟器身上,可能是没有走到代理。
带着问题我打开了代理的log,我用的是ss,所以我的log位置是在Library/Logs里面的ss-local.log,我先是打印100条来看一下
发现好像是真没有走到代理。
解决问题 (http proxy 开启本地的代理,在我们开发的时候开启,生产的时候关闭即可)
(dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (HttpClient client) {
client.findProxy = (uri) {
// proxy all request to localhost:8888
return "PROXY localhost:1087";
};
client.badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
};这样再次请求,你就发现成功了!也可以用这种方式进行抓包。