在play框架中下载https文件适用于开发但不适用于生产

时间:2016-12-01 01:51:13

标签: java apache https playframework download

我尝试将Dropbox链接下载到文件output.txt。像这样:

URL link = new URL("https://dl.dropboxusercontent.com/1/view/XXX/file.txt");
ReadableByteChannel rbc = Channels.newChannel(link.openStream());
FileOutputStream fos = new FileOutputStream("output.txt");
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);

当我在开发中运行我的应用程序(即activator run)时,这很好用。当应用程序在生产中暂存和部署时,我会在link.openStream()步骤获得连接超时:

play.api.UnexpectedException: Unexpected exception[ConnectException: Connection timed out]

我能够将任何http文件或网站保存到生产文件中。它似乎超时任何https文件。关于如何开始解决这个问题的任何想法?

这与播放有什么关系,还是我的apache服务器的配置问题?

由于

1 个答案:

答案 0 :(得分:0)

您可能遇到配置问题或从该服务器访问该URL的问题。这是一件容易的事。

您也可能遇到SSL证书问题。因此,您需要下载并在本地添加它或询问服务器所有者(一台服务器 - " https://dl.drop ...")来修复证书(这可能是他们的问题)一边)。

要验证您是否存在证书问题 - 您可以使用此问题中描述的代码Java and HTTPS url connection without downloading certificate 请勿在生产中使用此代码 - 因为您的安全性将为0,代码强迫您信任任何证书,因此" https"自然变成" http"为了你。

第二个问题(我得到几次)的原因是生产环境有更严格的安全设置,而我读取https资源的服务器在认证方面存在一些问题,如过期或错误地重新认证。