在 HttpURLConnection 上设置 FollowRedirects 的实例值

a C*_*CVn 1 java

我已经用谷歌搜索了这个,并检查了文档,但无法找到答案。所以现在我希望这里有人至少能就从哪里开始提出一个好的建议。

我有(为了清楚起见缩写):

import java.net.URL;
import java.net.HttpURLConnection;

URL myUrlObject = new URL("some ungodly long URL");
HttpURLConnection.setFollowRedirects(false);
HttpURLConnection connection = (HttpURLConnection) myUrlObject.openConnection();
Run Code Online (Sandbox Code Playgroud)

原则上,这工作得很好。然而,我有点担心setFollowRedirects()在服务器应用程序中调用静态(代码作为 servlet 运行),以及它如何与多个并发实例(可能是想要自动遵循重定向的代码)交互。因此,我宁愿在实例对象上设置它,然后使用该实例对象打开连接。问题是我无法直接实例化 HttpURLConnection 对象,并且在我的实验中,似乎无论我做什么(除了之前执行 setFollowRedirects(false) 之外), openConnection() 默认情况下都会遵循它遇到的任何重定向。我坚持使用 URL 另一侧的应用程序实现(在正常情况下可以返回 HTTP 200 OK 或 302 Found,无论哪种方式,我都需要捕获初始响应

另外需要注意的是,实际访问 myUrlObject 指向的资源在时间上可能会相对昂贵,并且完成后,我可以预期我的代码将由许多用户以相当快的速度连续执行(从而导致并发执行)。即使仅出于这个原因,我也不想在 openConnection() 调用周围使用外部锁定机制。

关于如何最好地进行的任何建议?

axt*_*avt 5

你有没有尝试过HttpURLConnection.setInstanceFollowRedirects()

HttpURLConnection connection = (HttpURLConnection) myUrlObject.openConnection(); 
connection.setInstanceFollowRedirects(false);
Run Code Online (Sandbox Code Playgroud)