8

我正在开发一个使用第三方 jar 的 Android 应用程序。我想监视并可能修改该库发出的 HTTP 请求。在 iOS 下,我可以通过注册一个自定义NSURLProtocol类来做到这一点,该类可以检查和操作应用程序进程中发生的任何网络请求。

Android有类似的东西吗?我承认,我是 Android 开发的新手,但一直无法找到解决此问题的有效方法。

我没有这个jar的源码,也不能依赖反编译。

我探索过的几件事:

  • 安卓内容提供者。不起作用,因为解决方案必须支持“http://”请求,而不是“content://”请求。
  • 创建自定义org.apache.http.impl.client.DefaultHTTPClient类。(这是用于我所追求的请求的底层网络类。)似乎这不起作用,因为Android已经缓存了这个类的系统版本并且总是加载它而不是我的,即使它设置得更高加载顺序。

我已经很好地查看了 Apache HTTP 库,虽然它有各种各样的东西HttpRequestInterceptor,比如HttpResponseInterceptor类,但这对我没有多大好处,因为该库实例化了一个DefaultHTTPClient实例并将其分配给私有方法中的私有成员我无法访问。

我的最终目标是监控和更改这些请求以进行单元测试。我不希望发出真正的请求;我想提供一个模拟响应。

4

1 回答 1

3

不幸的是,您不走运:Android 应用程序没有这种应用程序范围的拦截框架。

我的建议是设置一个代理来拦截请求并提供您的模拟响应。

于 2012-04-13T22:36:38.517 回答