Facebook 的 stetho 似乎只对 OKHTTP 有很好的支持,而对 Android 的所有其他网络框架却很少支持:http: //facebook.github.io/stetho/#integrations
我正在使用 Spring RestTemplate,我想知道如何让 stetho 与 Spring 很好地配合使用。我知道我可以将 OKHTTP 与 Spring Resttemplate 一起使用,但我更喜欢让我的应用程序保持小,并希望避免向我的应用程序添加额外的网络库:
基于 OkHttp 的附加 ClientHttpRequestFactory 可作为两个本机客户端的替代方案。可以通过 RestTemplate 构造函数或通过设置 requestFactory 属性将 RestTemplate 配置为使用 OkHttpRequestFactory。它在 Android 2.3 (Gingerbread) 和更新版本上受支持,但是为了使用它,您必须在项目中包含 OkHttp 依赖项。
看来我的 Spring RestTemplate 使用 HttpURLConnection 进行调用,并且似乎有关于如何使 stetho 与 HttpURLConnection 一起使用的说明,但说明非常简短:
如果您使用的是 HttpURLConnection,则可以使用 StethoURLConnectionManager 来协助集成,但您应该知道这种方法有一些注意事项。特别是,您必须将 Accept-Encoding: gzip 显式添加到请求标头并手动处理压缩响应,以便 Stetho 报告压缩的有效负载大小。
但是,我担心上述说明不适用于我的情况,因为我使用 aclienthttprequestinterceptor
发送请求并在发送之前添加授权标头。根据此线程,这会导致 GZIP 压缩发生两次:
带有 ClientHttpRequestInterceptor 的 RestTemplate 导致 GZIP 压缩两次
有没有人成功地将 Stetho 与 Spring RestTemplate for Android 一起使用?目前,一种解决方法是使用 Charles Proxy(付费替代)来检测所有网络调用,而不是使用 stetho。