【问题标题】:What is Android's equivalent for NSURLProtocol from the iOS SDK?iOS SDK 中的 NSURLProtocol 的 Android 等效项是什么?
【发布时间】:2012-04-13 22:07:16
【问题描述】:

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

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

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

我探索过的几件事:

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

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

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

【问题讨论】:

    标签: android apache-httpcomponents


    【解决方案1】:

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

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

    【讨论】:

    • 你能解释一下如何在android中设置应用范围的代理
    猜你喜欢
    • 1970-01-01
    • 2012-05-05
    • 2011-07-07
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    相关资源
    最近更新 更多