有什么方法可以在全球范围内挂钩每个 Ion 请求?

Any way to hook onto every Ion request on a global level?

我正在使用 Ion async HTTP library for Android,我想进行一些自定义日志记录。理想的是挂钩每个请求的开始和结束,以获得总请求时间和一些其他元数据,如 HTTP 响应代码和 URL。任何人都知道有什么方法可以做到这一点?

我正在试验 setAsyncHttpRequestFactory,但这似乎只允许过度挂钩请求开始,而不是结束。

    Ion.Config ionConf = Ion.getDefault(appContext).configure();
    final AsyncHttpRequestFactory reqFac = ionConf.getAsyncHttpRequestFactory();
    ionConf.setAsyncHttpRequestFactory((uri, method, headers) -> {
        // Do custom logging stuff here
        AsyncHttpRequest req = reqFac.createAsyncHttpRequest(uri, method, headers);
        return req;
    });

实现并添加一个AsyncHttpClientMiddleware(继承自SimpleMiddleware)并将其注入到AsyncHttpClient 的管道中。覆盖 onRequest 和 onResponseCompleted 以获取请求开始和结束的事件。

或者,如果您只是全局启用 Ion 日志记录,您可以在 adb 中查看请求时间和各种元数据 logcat。