在HttpURLConnection上设置FollowRedirects的实例值

时间:2011-02-08 10:38:40

标签: java

我已经使用Google搜索了checked the documentation,但未能提出答案。所以现在我希望这里的某个人至少对从哪里开始有一个很好的建议。

我(缩写为清晰):

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

URL myUrlObject = new URL("some ungodly long URL");
HttpURLConnection.setFollowRedirects(false);
HttpURLConnection connection = (HttpURLConnection) myUrlObject.openConnection();

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

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

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

2 个答案:

答案 0 :(得分:4)

您是否尝试过HttpURLConnection.setInstanceFollowRedirects()

HttpURLConnection connection = (HttpURLConnection) myUrlObject.openConnection(); 
connection.setInstanceFollowRedirects(false);

答案 1 :(得分:0)

public void setInstanceFollowRedirects(boolean followRedirects)

做你想做的事吗?