最近寫專案因為要要用到谷歌地圖,需要用到一個測距的介面。
- 首先是在谷歌地圖的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;
};複製程式碼
這樣再次請求,你就發現成功了!也可以用這種方式進行抓包。