URL url = new URL("http://www.vckbase.com/code/downcode.asp?id=2817"); 
HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection (); 
再如何才能获得要下载的文件名呢? 
还是用别的方法呢?

解决方案 »

  1.   

    像http://www.vckbase.com/code/downcode.asp?id=2817这样的地址,应该如何得到下载文件名呢?
      

  2.   

    jspsmartupload可以很简单实现上传和下载。可以去网上搜下,很多资料
      

  3.   

    想明白了,即使是经过重定向这个文件肯定也包含在Http返回包的头定义中。3xx响应的Location就是最终文件的绝对路径。URL url = new URL("http://www.vckbase.com/code/downcode.asp?id=2817"); 
    HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection(); 
    URL absUrl = httpConnection.getURL();System.out.println(absUrl);
      

  4.   

    引用:
    "3xx响应的Location就是最终文件的绝对路径。"
    什么意思?
    能举个例子吗?
    谢谢!!!URL url = new URL("http://www.vckbase.com/code/downcode.asp?id=2817"); 
    HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection(); 
    URL absUrl = httpConnection.getURL();System.out.println(absUrl);absUrl还是原来的地址呀!
      

  5.   

    3xx是重定向的意思.
    2xx是连接成功的意思.
    5xx是服务器有错误发生的意思.HttpURLConnection 里面有个如果重定向,就直接跳转到重定向的url,具体代码我忘了.
    你可以获取http响应,应该有个参数是重定向的文件地址.
      

  6.   

    看看讯雷是怎么下载的.
    看到没,下面这行,返回302,说明重定向了.
    2006-07-14 14:05:52 HTTP/1.1 302 Object moved看见没,下面这行,说明重定向后的地址:
    Location: /code/graphics/galgo/catwork0512.exe你只要获取这条返回信息,之后再去下载这个url就可以了.2006-07-14 14:05:52 连接www.vckbase.com:80...
    2006-07-14 14:05:52 连接www.vckbase.com:80成功
    2006-07-14 14:05:52 GET /code/downcode.asp?id=2817 HTTP/1.1
    2006-07-14 14:05:52 Host: www.vckbase.com
    2006-07-14 14:05:52 Accept: */*
    2006-07-14 14:05:52 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
    2006-07-14 14:05:52 Referer: http://www.vckbase.com/code
    2006-07-14 14:05:52 Pragma: no-cache
    2006-07-14 14:05:52 Cache-Control: no-cache
    2006-07-14 14:05:52 Connection: close
    2006-07-14 14:05:52 HTTP/1.1 302 Object moved
    2006-07-14 14:05:52 Connection: close
    2006-07-14 14:05:52 Date: Fri, 14 Jul 2006 06:03:53 GMT
    2006-07-14 14:05:52 Server: Microsoft-IIS/6.0
    2006-07-14 14:05:52 X-Powered-By: ASP.NET
    2006-07-14 14:05:52 Location: /code/graphics/galgo/catwork0512.exe
    2006-07-14 14:05:52 Content-Length: 157
    2006-07-14 14:05:52 Content-Type: text/html
    2006-07-14 14:05:52 Set-Cookie: ASPSESSIONIDCACADAAS=EBJOAAGDFHJHIOMAAONDEPFJ; path=/
    2006-07-14 14:05:52 Cache-control: private
    2006-07-14 14:05:52 重定向到http://www.vckbase.com/code/graphics/galgo/catwork0512.exe
    2006-07-14 14:05:52 连接www.vckbase.com:80...
    2006-07-14 14:05:52 连接www.vckbase.com:80成功
    2006-07-14 14:05:52 GET /code/graphics/galgo/catwork0512.exe HTTP/1.1
    2006-07-14 14:05:52 Host: www.vckbase.com
    2006-07-14 14:05:52 Accept: */*
    2006-07-14 14:05:52 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
    2006-07-14 14:05:52 Referer: http://www.vckbase.com/code/graphics/galgo
    2006-07-14 14:05:52 Cookie: ASPSESSIONIDCACADAAS=EBJOAAGDFHJHIOMAAONDEPFJ
    2006-07-14 14:05:52 Pragma: no-cache
    2006-07-14 14:05:52 Cache-Control: no-cache
    2006-07-14 14:05:52 Connection: close
    2006-07-14 14:05:53 HTTP/1.1 200 OK
    2006-07-14 14:05:53 Content-Length: 504552
    2006-07-14 14:05:53 Content-Type: application/octet-stream
    2006-07-14 14:05:53 Last-Modified: Thu, 24 Nov 2005 01:32:08 GMT
    2006-07-14 14:05:53 Accept-Ranges: bytes
    2006-07-14 14:05:53 ETag: "4ad97de296f0c51:20ef"
    2006-07-14 14:05:53 Server: Microsoft-IIS/6.0
    2006-07-14 14:05:53 X-Powered-By: ASP.NET
    2006-07-14 14:05:53 Date: Fri, 14 Jul 2006 06:03:53 GMT
    2006-07-14 14:05:53 Connection: close
    2006-07-14 14:05:53 开始读取数据...
    2006-07-14 14:05:54 连接www.vckbase.com:80...
    2006-07-14 14:05:55 被中止,退出
      

  7.   

    我用:
    URL url = new URL("http://www.vckbase.com/code/downcode.asp?id=2817"); 
    HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection (); 
    httpConnection.setRequestProperty("User-Agent","NetFox");
    int responseCode=httpConnection.getResponseCode();
    但responseCode总等于200还有如何打印出返回的信息??
    再次谢谢你,楼上
      

  8.   

    楼主很好学啊!一般重定向3xx的下一步需要你设置的User Agent来处理,用户不需要关心。所以你看到200 OK。
    至于打印信息,这是个exe文件,就下载到本地吧:InputStream in = (InputStream)httpConnection.getContent();
    FileOutputStream f = new FileOutputStream(new File("d:/aa.exe"));
    int i = 0;
    while(i != -1){
       i = in.read();
       f.write(i);
    }

    in.close();
    f.flush();
    f.close();
      

  9.   

    我们用java来解决实际问题。java技术交流,讨论java的技术细节和最新技术。欢迎中高级程序员以及渴望学习java技术的初学者加入讨论。QQ群:3001581
      

  10.   

    如何得到以下两条返回信息呢?2006-07-14 14:05:52 HTTP/1.1 302 Object moved
    2006-07-14 14:05:52 Location: /code/graphics/galgo/catwork0512.exe
      

  11.   

    如何得到以下两条返回信息呢?老大,你给的那个url本来就没有redirect,当然每次responseCode都是200,没法得到location啦这是你那个url返回的头部信息HTTP/1.1 200 OK
    504552
    application/octet-stream
    Thu, 24 Nov 2005 01:32:08 GMT
    bytes
    "4ad97de296f0c51:2137"
    Microsoft-IIS/6.0
    ASP.NET
    Thu, 20 Jul 2006 14:58:24 GMT这个url是用asp传输文件的,并没有重定向。
      

  12.   

    看来用HttpURLConnection是很难完成这个任务了!
    谢谢,大哥的帮忙!