是否可以从给定的网址获取结果网址?例如
System.out.println(realUrl("sourceforge.com"));
private String realUrl(String url)
{
....
}
应打印生成的网址“http://sourceforge.net/”,同样tinyurls会返回目标网址
答案 0 :(得分:3)
你可以:
检查字符串中是否存在协议。如果没有,请附加http://
然后使用HTTP客户端(如HttpClient)打开URL。然后按照重定向(.setFollowRedirects(true)
)直到它停止重定向。这将是“最终”或“真实”的URL。
HttpClient的一些示例代码可以在这里找到:
http://svn.apache.org/viewvc/httpcomponents/oac.hc3x/trunk/src/examples/
(参见TrivialApp.java
开始使用)
答案 1 :(得分:0)
未经过正确测试。
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;
}
}