求问:java怎么获取HTTP下载文件的默认文件名。。谢谢
做一个java自动下载程序,下载方面已做好了,但是默认的文件名和后缀获取不到。
如这样一个URL
http://a.tgbus.com/download/33747/1
实际上下载下来是一个“银行大劫案BankJob.apk”文件。但是我在程序里面获取不到这个名字。
尝试获取了http头信息,使用的是HttpURLConnection.getHeaderFields(),但是获取到的信息如下
X-Powered-By:[ASP.NET]
X-AspNet-Version:[2.0.50727]
ETag:[BD8087CE545B83591454C74D7806A941]
Date:[Mon, 18 Jun 2012 06:35:12 GMT]
Content-Type:[application/vnd.android.package-archive]
null:[HTTP/1.0 200 OK]
Age:[4230]
Cache-Control:[public, max-age=31536000]
Connection:[keep-alive]
Content-Length:[12198650]
Expires:[Tue, 18 Jun 2013 06:35:12 GMT]
Accept-Ranges:[bytes]
X-Cache:[HIT from CT-GDSD-31-198.fastcdn.com]
Server:[Microsoft-IIS/6.0]
里面并没有文件名相关的内容。。。求问,这个文件名还有可能写在了什么地方?谢谢
[解决办法]
看其他人的说法,得到启发,解决了,希望能对你有帮助
URL testUrl = new URL("http://a.tgbus.com/download/33747/1");
HttpURLConnection conn = (HttpURLConnection) testUrl.openConnection();
conn.setFollowRedirects(true);
int ret = conn.getResponseCode();
String fn=URLDecoder.decode(conn.getURL().toString(),"UTF-8");
System.out.println("------------"+ret+fn);
System.out.println("------------"+ret+fn.substring(fn.lastIndexOf("/")+1));
InputStream in=conn.getInputStream();
InputStreamReader dis=new InputStreamReader(in);
java.io.BufferedReader bf=new java.io.BufferedReader(dis);
r=bf.readLine();
int k=0;
while(r!=null)
{
System.out.println(r);
r=bf.readLine();
k++;
if(k>5)break;
}
conn.disconnect();