java和网站重定向检测

时间:2012-06-01 18:20:38

标签: java

我有java相关问题......

网站www.stationv3.com每日更新(大部分时间至少,它有点不规则)。每当我使用地址www.stationv3.com(使用浏览器)连接到网站时,它会将我重定向到它的子网页www.stationv3.com/date_of_latest_update.html

我正在尝试制作一个可以从网站上获取最新漫画的程序,但我不知道如何找到它的确切地址。但是我知道我能够知道我是否能够以某种方式找出每次连接时我被重定向的位置。这可能与Java?我知道它可以做各种古怪的事情,但我仍然是互联网相关的东西......

我使用确切的网站名称只是为了让您轻松查看发生了什么... 而且,我正在创建一个通用代码,可以(通过一些修改)应用于以这种方式运行的任何站点。

2 个答案:

答案 0 :(得分:2)

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。

答案 1 :(得分:0)

我认为你可以抓取:

http://www.stationv3.com/comics/{yyyy}{mm}{dd}sv3.gif

并忘记了重定向问题。您可以使用此代码(未经过测试):

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();