java - 如何在 HTTPUrlConnection 中取消设置 ContentHandlerFactory

标签 java httpurlconnection

HTTPUrlConnection.setContentHandlerFactory()方法抛出异常,表示工厂已定义。我明白那个。是否可以取消设置工厂并更改内容处理程序工厂?

最佳答案

URLConnection(HttpURLConnection 的父类(super class))中的factory字段是一个静态包访问成员变量。通过 API 修改它的唯一地方是 setContentHandlerFactory() 方法,正如您所注意到的,您只能对应用程序中的任何 URL 连接(或子类)调用它一次。

我相信有一种解决方法,但这并不理想:您可以使用反射重置和/或更改 factory 字段的值(假设您的应用程序具有适当的安全管理员权限来创建 field accessible )。

这是一个可以执行此操作的代码片段:

ContentHandlerFactory newFactory = ... // create factory instance
factoryField = URLConnection.class.getDeclaredField( "factory" );
factoryField.setAccessible( true );
factoryField.set( null, newFactory );

这样做的问题是 API 不希望这种情况发生,因此可能会产生不需要的副作用(因为它适用于所有 URL 连接子类)。基本上,您将自行承担风险。

关于java - 如何在 HTTPUrlConnection 中取消设置 ContentHandlerFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2742983/

相关文章:

java - 收集数组列表中的所有可观察字符串

java - 在 Java 应用程序中保存文件的好地方是什么?

java - 接口(interface)可以随着时间发展吗?

java - 如何通过 Java (JMagick) 在 ImageMagick 中使用大量参数?

Android HTTPUrlConnection POST

java - 如何让HttpURLConnection setConnectTimeout在Android下工作?

java - 使用 HttpUrlConnection 将访问 token 发送回 google api(401 错误)

java - 如何找到定时器线程的来源?

java - Android - 形成指定端口号的 URL 对象

java - URLConnection 从 php 服务器接收到错误的文本