正在实现一个java版的下载工具,但是遇到了一个问题,网络的http下载地址分为两种:
1.直接的下载地址,格式类似于:http://xxx.com/xxx.zip;
2.间接的下载地址。目前直接的下载地址倒是容易实现,但是间接的下载地址的该怎么获取到真正的下载地址和文件名? 

解决方案 »

  1.   

    通过Urlconnection对象获得响应头就可以了
      

  2.   

            /**
     * 下载网络文件
     * 
     * @param response
     * @throws MalformedURLException
     */
    public void downloadNet(HttpServletResponse response)
    throws MalformedURLException {
    // 下载网络文件
    int bytesum = 0;
    int byteread = 0; URL url = new URL("填写URL地址"); try {
    URLConnection conn = url.openConnection();
    InputStream inStream = conn.getInputStream();
    FileOutputStream fs = new FileOutputStream("c:/abc.gif"); byte[] buffer = new byte[1204];
    while ((byteread = inStream.read(buffer)) != -1) {
    bytesum += byteread;
    System.out.println(bytesum);
    fs.write(buffer, 0, byteread);
    }
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
      

  3.   


    朋友,你方法中的response在哪里用到了啊?还有你试试间接下载地址的啊,看能否成功
      

  4.   

    如果是重定向的话,HttpURLConnction的getResponseCode()返回的状态码是302,而且getContentLength()返回0,通过getHeaderField(n)遍历返回的相应头,找到Location,里面就是重定向以后的资源的位置