美文网首页Flutter&Dart
dio 设置代理, 从而实现通过 Charles 等抓包工具来抓

dio 设置代理, 从而实现通过 Charles 等抓包工具来抓

作者: 哥哥是欧巴Vitory | 来源:发表于2019-07-03 17:02 被阅读1次

    Dio代理设置

    在正常情况下, 抓包工具是无法直接抓取 Flutter 应用的网络通信的, 如果需要在开发的时候抓取网络数据, 则可以显式设置 dio http 客户端代理, 代码如下所示:

    // 在启用代理的情况下, 且非 production 配置下的代理配置. (其中 usingProxy 是在外部的一个被忽略文件中定义)

    if (usingProxy && AppExecutionEnvironment.isDebug) {

      final adapter = _client.httpClientAdapter as DefaultHttpClientAdapter;

      adapter.onHttpClientCreate = (client) {

        // 设置该客户端的代理为指定的 ip:端口

        client.findProxy = (uri) {

          // localProxyIPAddress 和 localProxyPort 是在外部被忽略文件中定义, 方便各个开发者自行更改.

          return 'PROXY $localProxyIPAddress:$localProxyPort';

        };

        // 安卓机上面证书授权:

        client.badCertificateCallback = (cert, host, port) => true;

      };

    }

    其中 AppExecutionEnvironment 定义如下:

    classAppExecutionEnvironment{

    /// 是否是在 debug 配置模式下

    staticfinalboolisDebug = () {

    boolisDebug =false;

    assert(() {

    isDebug =true;

    returntrue;

        }());

    returnisDebug;

      }();

    /// 是否是在 release 配置模式下

    staticfinalboolisRelease = () {

    finalisRelease =bool.fromEnvironment("dart.vm.product");

    returnisRelease;

      }();

    /// 是否是在 profile 配置模式下

    ///

    /// 实际可能还有其他配置, 都先归入 profile 这里面, 日后再说.

    staticfinalboolisProfile = () {

    finalisProfile = !isRelease && !isDebug;

    returnisProfile;

      }();

    staticvoiddebugDescription() {

    if(isDebug) {

    print('当前在 debug 配置下执行代码');

    }elseif(isRelease) {

    print('当前在 release 配置下执行代码');

    }else{

    print('当前在其他配置模式下执行代码');

        }

      }

    }

    在工程内可以创建一个被 git 忽略的文件, 内容如下:

    // HTTP 代理设置 ------------------------------------------------------------

    /// 是否启用代理

    const usingProxy = false;

    /// 代理的 ip 地址

    const localProxyIPAddress = '192.168.2.201';

    /// 代理端口

    const localProxyPort = 9999;

    // -------------------------------------------------------------------------

    相关文章

      网友评论

        本文标题:dio 设置代理, 从而实现通过 Charles 等抓包工具来抓

        本文链接:https://www.haomeiwen.com/subject/uijchctx.html