Java - 从" http://www.example.com/something.php?id = 1111"获取文件名。

时间:2016-03-23 10:05:06

标签: java http

在谷歌搜索后,我发现文件名在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]


我需要原始文件名。如果可以解决我的问题,我使用外部库没有问题。

1 个答案:

答案 0 :(得分:2)

只需使用getURL()连接方法,它就会返回已重定向的网址:

System.out.println(conn.getURL());

输出:

http://sound6.mp3slash.net/indian/mumbai_salsa/mumbaisalsa04(www.songs.pk).mp3