什么是Android与iOS SDK中的NSURLProtocol等效?

时间:2012-04-13 22:07:16

标签: android apache-httpcomponents

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

Android有什么相似之处吗?我承认,我是Android开发的新手,但一直无法找到解决这个问题的工作方案。

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

我探讨了几件事:

  • Android ContentProvider。无法使用,因为解决方案必须支持“http://”请求,而不是“content://”请求。
  • 创建自定义org.apache.http.impl.client.DefaultHTTPClient类。(这是用于我之后的请求的基础网络类。)似乎这不起作用,因为Android已缓存了这个类的系统版本并且总是加载而不是我的,即使它在加载顺序中设置得更高。

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

我的最终目标是监控和更改这些单元测试请求。我不希望发出真实的请求;我想提供模拟回复。

1 个答案:

答案 0 :(得分:3)

不幸的是,你很幸运:Android应用程序没有适用于该类型的拦截框架。

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