java - 使用 HttpsURLConnection 下载 xml.gz 文件

标签 java ssl https

我正在尝试使用 java 中的 HttpsURLConnection 从远程服务器下载 xml.gz 文件,但我得到的响应是空的。这是我的代码示例:

URL server = new URL("https://www.myurl.com/path/sample_file.xml.gz");
HttpsURLConnection connection = (HttpsURLConnection)server.openConnection();
connection.connect();

当我尝试从连接中获取 InputStream 时,它是空的。 (如果我尝试 connection.getInputStream().read() 我得到 -1)我期望的文件大约为 50MB。

为了测试我的理智,我还尝试在我的浏览器中输入完全相同的 url,它确实返回了我需要的文件。我错过了什么吗?我是否必须在连接中设置某种参数?非常感谢任何帮助/指导。

最佳答案

是否记录了任何异常?该网站提供的是自签名 SSL 证书,还是未由 CA 签名的证书?它可能在您的浏览器中正常工作(浏览器可能已被告知接受来自该域的自签名证书)而不是在您的代码中正常工作的原因有多种。

使用 curl 的结果是什么?或 wget获取 URL?

InputStream 为空/InputStream.read() == -1 的结果意味着流中没有任何内容可读取,这意味着流甚至无法正确设置。

更新:See this page有关如何处理连接代码中无效/自签名证书的一些信息。或者,如果站点提供的证书无效,您可以将其导入服务器的 keystore 以告知 Java 信任该证书。 See this page for more info .

关于java - 使用 HttpsURLConnection 下载 xml.gz 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/240692/

相关文章:

c# - SSL证书生成

php - 通过 curl 和 php 连接到一个端口地址

https - 如何配置 Play 应用程序以使用 Let's Encrypt 证书?

ssl - Owin self 主机 SSL 连接重置

java - 矩阵加法java

java - 我应该如何在 Spring boot 中配置 httpMessageConverters 以将消息转换为所需的格式?

java - HttpServer - HttpExchange - 可查找流

php - 生成 2048 位和密码保护的 csr?

Java 库搜索顺序

php - SSL 安全说明