是否可以從給定的URL獲取生成的URL?例如使用Java獲取結果URL
System.out.println(realUrl("sourceforge.com"));
private String realUrl(String url)
{
....
}
應打印生成的URL 「http://sourceforge.net/」,同樣tinyurls將返回目的地URL
是否可以從給定的URL獲取生成的URL?例如使用Java獲取結果URL
System.out.println(realUrl("sourceforge.com"));
private String realUrl(String url)
{
....
}
應打印生成的URL 「http://sourceforge.net/」,同樣tinyurls將返回目的地URL
您可以:如果協議出現在字符串中
檢查。如果沒有,追加http://
然後使用HTTP客戶端(如HttpClient)打開URL。然後按照重定向(.setFollowRedirects(true)
),直到它停止重定向。這將是「最終」或「真實」的網址。
爲HttpClient的一些示例代碼可以在這裏找到:
http://svn.apache.org/viewvc/httpcomponents/oac.hc3x/trunk/src/examples/
(見TrivialApp.java
上手)
不正確的測試。
import java.io.*;
import java.net.*;
public class UrlCon3
{
public static void main(String[] args)
{
String x="http://tinyurl.com/cys7t";
while(x!=null)
{
System.out.println(x);
x=getRedirectionUrl(x);
}
}
static String getRedirectionUrl(String x)
{
BufferedReader in = null;
try
{
URL url = new URL(x);
HttpURLConnection.setFollowRedirects(false);
HttpURLConnection uc = (HttpURLConnection)url.openConnection();
uc.connect();
in = new BufferedReader(new InputStreamReader(uc.getInputStream()));
return(uc.getHeaderField("Location"));
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
if (null != in)
{
in.close();
}
}
catch (IOException e)
{
// ignore
}
}
return null;
}
}
對不起,我誤解了你的問題,因爲得到的URL的「內容」。請刪除我的答案 – naikus 2010-09-01 05:38:41