java获取真实的下载地址和下载文件名

Mars酱 2010-04-14 08:38:57
比如有这样一个地址:
http://www.vckbase.com/tools/downtools.asp?id=209
用下载工具打开时,能够知道其真实的下载地址和下载名称
请问用java怎么能获取到真实的下载地址和名称呢?
我试了使用java.net.HttpURLConnection类,获取到了以下文件头信息
============getHeaderField()===============
openConnection.getContentLength()=3383
Date=Wed, 14 Apr 2010 08:39:00 GMT
Content-Length=3383
Expires=null
Last-Modified=null
Accept-Ranges=null
Connection=null
Content-Type=text/html
Server=Microsoft-IIS/6.0
Cache-Control=private
ETag=null
Location=null
openConnection.getURL().getFile()=/tools/viewtools.asp?id=209
openConnection.getURL().getQuery()=id=209
openConnection.getURL().getUserInfo()=null
openConnection.getURL().getPath()=/tools/viewtools.asp
openConnection.getURL().getProtocol()=http
openConnection.getURL().getAuthority()=www.vckbase.com
openConnection.getURL().getRef()=null
openConnection.getURL().toExternalForm()=http://www.vckbase.com/tools/viewtools.asp?id=209
===========================================
输出的信息中都没有真实的下载地址,请问如何能获得到呢?那些下载工具(flashget、迅雷等)又是如何做到的呢?
...全文
1073 19 打赏 收藏 转发到动态 举报
写回复
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
aly2169 2012-05-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
conn.addRequestProperty("referer", "http://www.vckbase.com");
[/Quote]
然后呢 接着怎么取啊
nullpointer 2012-02-09
  • 打赏
  • 举报
回复
http://dl5.csdn.net/fd.php?i=993340060698035&s=1ba8b65b345febb34deb2819943b6d54这是一个csdn下载文件的链接,怎么解析出真确的下载地址呢,我试了urldecode,没用,请指教。
guoxiang98 2012-01-02
  • 打赏
  • 举报
回复
貌似楼主也是长沙的,多多交流交流
guoxiang98 2012-01-02
  • 打赏
  • 举报
回复
哈哈,我弄出来了,你这个回答完全是错误的
hncshuhua 2012-01-02
  • 打赏
  • 举报
回复
这个对我有些帮助,谢谢了。
guoxiang98 2012-01-02
  • 打赏
  • 举报
回复
我也想知道啊,最近碰到这个问题
JFSIFJSI 2011-10-31
  • 打赏
  • 举报
回复
顶一下,看到完整的帖子。
hu841128 2010-12-08
  • 打赏
  • 举报
回复
学习!!!!!!!!!!!!
love13983072282 2010-09-03
  • 打赏
  • 举报
回复
这是URLDecoder的用法:
String fileRealPath = URLDecoder.decode("http://41.dc.ftn.qq.com/ftn_handler/741dd3c731a10fb49152e35da5ded5c32dab9907ef047317d91110099c32042bc40c20588a80612d45c01d5cd92588abe9b520e05d45838b61642af532b31cb2/%E7%94%B5%E5%BD%B1%E5%8F%91%E8%A1%8C%E7%BD%91.City.Under.Siege.2010.DVDSCR.....avi?k=57643","UTF-8");
System.out.println(fileRealPath);
love13983072282 2010-09-03
  • 打赏
  • 举报
回复
LZ举这个例子http://www.vckbase.com/tools/viewtools.asp?id=209 我用了浏览器打开是个网页。如果真有下载。我的迅雷会弹出下载对话框的。针对你所说的用java解析下载文件地址和文件名。看这个地址:http://41.dc.ftn.qq.com/ftn_handler/741dd3c731a10fb49152e35da5ded5c32dab9907ef047317d91110099c32042bc40c20588a80612d45c01d5cd92588abe9b520e05d45838b61642af532b31cb2/%E7%94%B5%E5%BD%B1%E5%8F%91%E8%A1%8C%E7%BD%91.City.Under.Siege.2010.DVDSCR.....avi?k=57643
用URLDecoder这个类来解析下载链接就会得到:http://41.dc.ftn.qq.com/ftn_handler/741dd3c731a10fb49152e35da5ded5c32dab9907ef047317d91110099c32042bc40c20588a80612d45c01d5cd92588abe9b520e05d45838b61642af532b31cb2/电影发行网.City.Under.Siege.2010.DVDSCR.....avi?k=57643
这里的k=57643就应该是服务器里对应的影片名《周星驰莫少聪经典大片《龙凤茶楼》DVD中字.RMVB》
这就像我们删除WEB程序的一条数据时。看到的只是http://fd.ds.w/wef?id=1 而实际删除的是id=1所对应的数据迅雷里面的下载链接是将下载路径通过某种编码方式编码的。我们一般看到的只是一连串的字符。
你点击用迅雷下载的文件右击其属性就会看到起真实的下载链接和文件名。
获取文件名:添加常用文件的扩展名到一个数组中。通过文件扩展名来匹配连接。再截取匹配扩展名前面的第一个"."和"/"之间的字符串就是文件名。

至于迅雷等这些下载软件是怎么知道下载地址和下载文件名。我想只需将网络资源数据库与迅雷服务器之间有联结就可以获取。只是我的个人想法,希望能帮到你。
Mars酱 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 godisaboy 的回复:]

conn.addRequestProperty("referer", "http://www.vckbase.com");
[/Quote]

多谢GodIsABoy
GodIsABoy 2010-04-17
  • 打赏
  • 举报
回复
conn.addRequestProperty("referer", "http://www.vckbase.com");
Mars酱 2010-04-17
  • 打赏
  • 举报
回复
自己再顶,希望有人回答
Mars酱 2010-04-16
  • 打赏
  • 举报
回复
自己再顶
MingLoveHui 2010-04-16
  • 打赏
  • 举报
回复
不懂 新手
Mars酱 2010-04-16
  • 打赏
  • 举报
回复
求高手回答
Mars酱 2010-04-15
  • 打赏
  • 举报
回复
自己顶
ThinkCat 2010-04-14
  • 打赏
  • 举报
回复
不明白,帮顶了
wenshaoji168 2010-04-14
  • 打赏
  • 举报
回复
有研究价值!

62,567

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告