我用下面这样的代码发出一个简单的URL请求:
URL url = new URL(webpage);
URLConnection urlConnection = url.openConnection();
InputStream is = urlConnection.getInputStream();但是在最后一行,我得到了“重定向太多次错误”。如果我的"webpage“变量是google.com,那么它工作得很好,但是当我尝试使用servlet的URL时,它就失败了。似乎我可以调整它跟随重定向的次数(默认为20次):
System.setProperty("http.maxRedirects", "100");但是当我把它调到100时,抛出错误肯定需要更长的时间,所以我知道它正在尝试。然而,我的servlet的URL在(任何)浏览器中都工作得很好,并且在firebug中使用"persist“选项,它似乎只重定向一次。
关于我的servlet的更多信息...它在tomcat中运行,apache使用'mod-proxy-ajp‘作为前端。还要注意的是,它使用的是表单身份验证,因此您输入的任何URL都应将您重定向到登录页面。正如我所说的,这在所有浏览器中都能正常工作,但由于某些原因,重定向不能与Java6中的URLConnection一起工作。
感谢你的阅读...想法?
发布于 2012-06-14 23:56:47
它显然是在无限循环中重定向,因为您不维护用户会话。会话通常由cookie支持。在使用URLConnection之前,您需要创建一个CookieManager。
// First set the default cookie manager.
CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL));
// All the following subsequent URLConnections will use the same cookie manager.
URLConnection connection = new URL(url).openConnection();
// ...
connection = new URL(url).openConnection();
// ...
connection = new URL(url).openConnection();
// ...另请参阅:
发布于 2013-02-21 06:29:58
Duse,我添加了下面这几行:
java.net.CookieManager cm = new java.net.CookieManager();
java.net.CookieHandler.setDefault(cm);请参阅此示例:
java.net.CookieManager cm = new java.net.CookieManager();
java.net.CookieHandler.setDefault(cm);
String buf="";
dk = new DAKABrowser(input.getText());
try {
URL url = new URL(dk.toURL(input.getText()));
DataInputStream dis = new DataInputStream(url.openStream());
String inputLine;
while ((inputLine = dis.readLine()) != null) {
buf+=inputLine;
output.append(inputLine+"\n");
}
dis.close();
}
catch (MalformedURLException me) {
System.out.println("MalformedURLException: " + me);
}
catch (IOException ioe) {
System.out.println("IOException: " + ioe);
}
titulo.setText(dk.getTitle(buf));发布于 2014-02-21 02:18:02
我在unix环境中使用Tomcat6上的Jenkins时遇到了这个错误。出于某种原因,升级到Java7解决了这个问题。我很有兴趣知道这到底是为什么要修复它。
https://stackoverflow.com/questions/11022934
复制相似问题