Moved Permanently

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

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

class DownloadTask extends AsyncTask {

        @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.

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

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

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

image.png

你可能感兴趣的:(Moved Permanently)