【问题标题】:Spring action for download not working in Android browsers用于下载的 Spring 操作在 Android 浏览器中不起作用
【发布时间】:2017-03-13 05:17:31
【问题描述】:

我正在使用 JSP 和 Spring MVC 开发一个 Web 应用程序。

在我的控制器中,我有一个下载 APK 文件的操作:

@Controller("ApplicationController")
public class ApplicationController {
....

    @RequestMapping(value = "/getApp", method = RequestMethod.GET)
    public void getApp(HttpServletRequest request, HttpServletResponse response) {
        FileInputStream fis = new FileInputStream("D:\\test.apk");
        byte[] bytes = IOUtils.toByteArray(fis);
        response.setContentType("application/octet-stream");
        response.setHeader("Content-Disposition", "attachment; filename=test.apk");
        response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Expires", "0");
        response.getOutputStream().write(bytes);
        response.flushBuffer();
    }
 ....
}

在一个页面中,我有一个链接可以调用此操作:

<a href="/getApp" target="_blank">Get App</a>

此链接在 PC 浏览器中有效,但在 Chrome 等 Android 浏览器中使用时,下载失败。

添加:

之前,我通过 SSL 连接使用该链接,但我已经通过简单的 http 连接对其进行了测试,并且它有效。我认为这是我的 SSL 连接和 Android 下载管理器的问题!!!!

提前感谢任何帮助。

【问题讨论】:

  • in Android browsers like Chrome, download fails 的症状是什么?请复制并粘贴错误消息(如果有)。
  • @greybeard 没有调试错误,只是在Android Chrome浏览器中触摸下载链接时,浏览器要求下载文件,但确认下载后,Android显示一个包含“下载失败!”的toast通知留言
  • 当您下载其他类型的文件而不是 apk 时,您的控制器是否正常工作?
  • @eltabo 我用文本文件试过了,同样的问题发生了。
  • @eltabo 我通过 SSL 连接连接到 Web 应用程序。浏览器会因为我的 SSL 证书而拒绝下载请求吗?

标签: java android spring jsp spring-mvc


【解决方案1】:

几天后,作为结论,我认为当我们在 android 网络浏览器中单击下载链接时,该链接将被第三方应用程序 Android 下载管理器打开,因此该应用程序无法建立安全可靠的连接由于证书未经验证,通过 SSL 连接到我的服务器。

但是,我通过将下载 HTTPS 请求切换为下载文件的 HTTP 请求解决了我的问题。

【讨论】:

    猜你喜欢
    • 2010-12-28
    • 1970-01-01
    • 2016-11-21
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    相关资源
    最近更新 更多