私の会社はApacheを使用していないので、独自のソケットコードを作成しました。以下では、HTMLDocはサーバー応答の私のバージョンです。元のURLが301応答コードを提供した場合にブラウザがリダイレクトするURLを取得しようとしています。
static public void main(String args[]) throws Exception
{
String spec = "http://some_url_with_301_redirect.com";
URL my_url = new URL(spec);
HTMLDoc doc = getDocFromURL(my_url);
// Do stuff with the doc.
}
public static HTMLDoc getDocFromURL(URL url)
{
try
{
URLConnection u = url.openConnection();
if ( u instanceof HttpURLConnection )
{
HttpURLConnection http_u = (HttpURLConnection)u;
int response_code = http_u.getResponseCode();
if (response_code == 300 || response_code == 301 || response_code == 302)
{
URL redirected_url = getRedirectedURL(url);
return getDocFromURL(redirected_url);
}
}
return null;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
問題は、getRedirectedURL(url)メソッドがどのようになるかわかりません。なじみのないhttp_uへの簡単な電話はありますか?