java - 用于下载的 Spring Action 在 Android 浏览器中不起作用

标签 java android spring jsp spring-mvc

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

在我的 Controller 中,我有一个下载 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 浏览器中有效,但在 Android 浏览器(如 Chrome)中使用时,下载失败。

已添加:

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

提前感谢任何帮助。

最佳答案

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

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

关于java - 用于下载的 Spring Action 在 Android 浏览器中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40336832/

相关文章:

java - 在 Google App Engine 上从 Java 7 迁移到 Java 8 时出现内存错误/500 错误

android - 如何在 ANativeWindow 上显示 JPEG?

java - 从两个不同的数据库中检索相同 DTO 的信息

android - NinePatchDrawable 不从 block 中获取填充

android - Android 位置监控中的误报

Spring 表达式语言 (SpEL) 不适用于 JPA/hibernate 实体

java - @Autowired 不注入(inject) Spring Data JPA 存储库 - NullPointerException

java - 对于原子类,Java 如何按值管理调用?

java - 如何在 Android 中创建 GUI 而不是使用 XML?

Java:点子目录