我正在使用 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/