美文网首页
Moved Permanently

Moved Permanently

作者: 糖葫芦_倩倩 | 来源:发表于2018-12-14 10:10 被阅读10次

    关于下载文件中包含重定向问题的解决方案。
    之前下载文件没问题,但是今天遇到一个下载文件里包含重定向,还是用之前的下载文件的方法就不行了,默认浏览器打开下载,是自动重定向的。

    这是我以前的下载文件的代码:

    class DownloadTask extends AsyncTask<String, Integer, String> {
    
            @Override
            protected String doInBackground(String... params) {
                String result = "";
                OutputStream output = null;
                try {
                    URL url = new URL(params[0]);
                    // 创建一个HttpURLConnection连接
                    URLConnection urlConn = (URLConnection ) url
                            .openConnection();
                  
                    InputStream input = urlConn.getInputStream();
    
                    // 文件夹
                    File dir = new File(Constant.K0_VOICE_DIR);
                    if (!dir.exists()) {
                        dir.mkdirs();
                    }
                    // 本地文件
                    File file = new File(Constant.K0_VOICE_DIR + params[1]);
                    if (!file.exists()) {
                        file.createNewFile();
                        // 写入本地
                        output = new FileOutputStream(file);
                        result = file.getAbsolutePath();
                        byte buffer[] = new byte[4*1024];
                        int inputSize = -1;
                        while ((inputSize = input.read(buffer)) != -1) {
                            output.write(buffer, 0, inputSize);
                        }
                        output.flush();
                    }
    
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        output.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                return result;
            }
    
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
            }
    
            @Override
            protected void onPostExecute(String result) {
    
             //下载完成.....
    
                super.onPostExecute(result);
            }
        }
    

    按照这个下载,你会发现下载的例如mp3 会无法播放,点开查看:

     < a href="https:xxxx">Moved Permanently</ a>.
    

    href 里包含一个新的链接。需要添加如下代码,获取新的链接地址下载:

     URLConnection urlConn = (URLConnection ) url
                            .openConnection();
    //下载的文件中含有重定向链接
     String redirect = urlConn.getHeaderField("Location");
      if (redirect != null){
         urlConn = new URL(redirect).openConnection();
     }
    

    奉上我在 stackoverflow 上找到的答案:

    image.png

    相关文章

      网友评论

          本文标题:Moved Permanently

          本文链接:https://www.haomeiwen.com/subject/brswhqtx.html