flutter的代理問題

Meoga Zeng發表於2020-03-29

最近寫專案因為要要用到谷歌地圖,需要用到一個測距的介面。

  1. 首先是在谷歌地圖的API中開啟我們需要用到的一個  Distance Matrix API
  2. 然後我用的是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條來看一下

flutter的代理問題

發現好像是真沒有走到代理。

解決問題 (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;
};複製程式碼

這樣再次請求,你就發現成功了!也可以用這種方式進行抓包。


相關文章