java与网站重定向检测

java与网站重定向检测,java,Java,我有一个与java相关的问题 网站www.stationv3.com每天都会更新(至少大多数时候,它有点不规则)。每次我使用地址www.stationv3.com(使用浏览器)连接到站点时,它都会将我重定向到其子页面www.stationv3.com/date\u of_latest\u update.html 我正试图制作一个程序,将从网站上提取最新的漫画,但我不知道如何找到它的确切地址。但我知道,如果我能找到我在每次连接中被重定向到哪里,我就能找到答案。java可以做到这一点吗?我知道它可以

我有一个与java相关的问题

网站www.stationv3.com每天都会更新(至少大多数时候,它有点不规则)。每次我使用地址www.stationv3.com(使用浏览器)连接到站点时,它都会将我重定向到其子页面www.stationv3.com/date\u of_latest\u update.html

我正试图制作一个程序,将从网站上提取最新的漫画,但我不知道如何找到它的确切地址。但我知道,如果我能找到我在每次连接中被重定向到哪里,我就能找到答案。java可以做到这一点吗?我知道它可以做各种奇怪的事情,但我对互联网相关的东西还是很陌生

我使用了确切的网站名称,只是为了让你更容易地检查正在发生的事情。。。 而且,我正在创建一个通用代码,它可以(通过一些修补)应用于任何以这种方式运行的站点

import java.net.*;
public class ShowStationV3Redirect {
public static void main(String[] args) throws Exception {
    URL url = new URL(args[0]);
    HttpURLConnection.setFollowRedirects(false);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    System.out.println("Response code = " + connection.getResponseCode());
    String header = connection.getHeaderField("location");
    if (header != null)
        System.out.println("www.stationv3.com redirected to " + header);
}
}

上面的代码片段告诉您要重定向到哪个URL。

我想您可以:

http://www.stationv3.com/comics/{yyyy}{mm}{dd}sv3.gif
忘了重定向问题吧。您可以使用此代码(实际上未测试):

URL服务器=新URL(“”);
HttpURLConnection连接=(HttpURLConnection)server.openConnection();
connection.setRequestMethod(“GET”);
connection.setDoInput(true);
connection.setDoOutput(真);
connection.setUseCaches(false);
addRequestProperty(“接受”、“图像/gif”);
addRequestProperty(“接受编码”、“gzip、deflate”);
connection.connect();
InputStream is=connection.getInputStream();
OutputStream os=新文件OutputStream(“c:/mycomic.gif”);
字节[]缓冲区=新字节[1024];
int byteReaded=is.read(缓冲区);
while(byteReaded!=-1)
{
写操作(缓冲区,0,字节);
byteReaded=is.read(缓冲区);
}
os.close();

了解重定向是如何完成的。使用Javascript?有位置标题吗?一旦你发现了这一点,我们可能会帮助你。你的URL中没有被重定向到date_of_latest_update.html的地址吗?我不是想重定向,我只是想知道我被重定向到了哪里。不,它只是停留在www.stationv3.com上。不管问题是什么,如果我只输入“www.stationv3.com”,java只会下载我重定向到的站点。。。我早就想到了,但我从没想过它会真的起作用,所以我忽略了这个想法。。。在阅读@Piyush的评论后,现在就尝试了它。
HttpURLConnection
类默认情况下将自动遵循重定向(3xx响应代码)(请参见
HttpURLConnection.setInstanceFollowRedireds
方法)。这不包括基于Javascript或HTML的重定向,只有3xx重定向。我可以,但我不知道确切的地址-漫画可能有一段时间没有更新,所以输入今天的日期并尝试连接将失败。这就是为什么我必须有最新地址的原因。@Karlovsky120当你发出HTTP请求时,你可以检查它是否有404。@Karlovsky120得到了。顺便说一句,你注意到网站上有一个RSS源,也可以用来获取最新的图像地址吗?也许这是另一种选择。
URL server = new URL("<put here the image URL>");
HttpURLConnection connection = (HttpURLConnection)server.openConnection();
connection.setRequestMethod("GET");
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.addRequestProperty("Accept","image/gif");
connection.addRequestProperty("Accept-Encoding", "gzip, deflate");
connection.connect();
InputStream is = connection.getInputStream();       
OutputStream os = new FileOutputStream("c:/mycomic.gif");

byte[] buffer = new byte[1024];     
int byteReaded = is.read(buffer);
while(byteReaded != -1)
{
    os.write(buffer,0,byteReaded);
byteReaded = is.read(buffer);
}

os.close();