在谷歌搜索后,我发现文件名在Content-Disposition
标题字段中,但此链接没有此标题字段。这是链接
http://www.songspk.link/link/song.php?songid=5558
在网络浏览器中,上面的链接重定向到
http://sound6.mp3slash.net/indian/mumbai_salsa/mumbaisalsa04%28www.songs.pk%29.mp3
我使用的代码:
URL url = new URL("http://www.songspk.link/link/song.php?songid=5558");
HttpURLConnection conn = null;
try {
conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("User-Agent",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0");
conn.setRequestMethod("GET");
conn.setInstanceFollowRedirects(true);
Map<String, List<String>> map = conn.getHeaderFields();
Set<String> keys = map.keySet();
for (String s : keys) {
System.out.println(s);
System.out.println("--->" + map.get(s));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
conn.disconnect();
}
我检查了所有标题字段,这里是列表
null --->[HTTP/1.1 200 OK] ETag --->["98f85f68c5ddcf1:0"] Date --->[Wed, 23 Mar 2016 10:01:15 GMT] Content-Length --->[5777792] Last-Modified --->[Wed, 01 Oct 2014 22:16:54 GMT] Accept-Ranges --->[bytes] Content-Type --->[audio/mpeg] X-Powered-By-Plesk --->[PleskWin] X-Powered-By --->[ASP.NET] Server --->[Microsoft-IIS/7.5]
我需要原始文件名。如果可以解决我的问题,我使用外部库没有问题。
答案 0 :(得分:2)
只需使用getURL()连接方法,它就会返回已重定向的网址:
System.out.println(conn.getURL());
输出:
http://sound6.mp3slash.net/indian/mumbai_salsa/mumbaisalsa04(www.songs.pk).mp3