【问题标题】:How to intercept HTTP requests made by a 3rd party library on Android?如何拦截 Android 上第 3 方库发出的 HTTP 请求?
【发布时间】:2011-09-21 07:56:00
【问题描述】:

对于我的项目,我必须使用第 3 方 Java 库,它会向知名服务器发出一些 HTTP 请求。我需要将自己的标头添加到这些请求中,并想知道如何实现它?

一个 HttpRequestInterceptor 似乎是答案,但我怎样才能在全球范围内“注册”这个,以便第 3 方库使用它?是否可以使用反射?

我不想使用代理应用程序。只是我的应用程序应该拦截并修改该第 3 方库的 HTTP 请求。

感谢您的帮助, 迈克尔

【问题讨论】:

  • 所以没有合适的解决方案?谢谢

标签: java android


【解决方案1】:

我需要在这些请求中添加自己的标头,想知道如何实现它?

不要使用第 3 方 Java 库,自己发出 HTTP 请求。或者,消除对自定义标头的需求,这样您就可以毫无问题地使用现有的 3rd 方 Java 库。

一个 HttpRequestInterceptor 似乎是答案,但我怎样才能在全球范围内“注册”这个,以便第 3 方库使用它?

没有这样的全局拦截器,而且很可能库没有使用 HttpClient,无论如何——“拦截器”是一个 HttpClient 概念。

是否可以使用反射?

您必须向身份不明的第 3 方 Java 库的作者提出这个问题。

【讨论】:

  • 不幸的是,摆脱库和/或标题不是一种选择:-(。
  • @Michael Preinbauer:然后说服库作者给你钩子来设置标题。
【解决方案2】:

创建自定义 URLStreamHandlerFactory 和 URLStreamHandler 并通过调用 URL.setURLStreamHandlerFactory(this) 从应用程序 onCreate() 设置它,它将允许您在将标头传递给服务器之前拦截和更改标头。

【讨论】:

    猜你喜欢
    • 2023-03-18
    • 2012-07-11
    • 2012-09-09
    • 1970-01-01
    • 2013-02-02
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多