gpt4 book ai didi

java - 无法下载内容类型为 text/html 的文件

转载 作者:行者123 更新时间:2023-12-01 17:16:08 26 4
gpt4 key购买 nike

我有一个 URL,当我直接在浏览器上尝试时,它将下载 pdf 文件。但是,当我在 Java 代码中使用相同的 URL 使用 FileInputStream 下载文件时,我遇到了一个问题,例如 URL 的内容类型是 text/html,而不是 application/pdf,因此我们无法打开文件URL 内的内容类型不是 pdf。

这里出现了困惑,当内容类型不是 application/pdf 时,我为什么能够从浏览器下载文件?

代码有问题吗?

String pdfUrl = service.getPdfUrl(bpaRequest);
URL url1 = new URL(pdfUrl);
FileOutputStream fos1 = new FileOutputStream(fileName);
System.out.print("Connecting to " + url1.toString() + " ... ");
URLConnection urlConn = url1.openConnection();

// Checking whether the URL contains a PDF
if (!urlConn.getContentType().equalsIgnoreCase("application/pdf")) {
throw new CustomException("INVALID_CONTENT", "contentType is not pdf");
} else {
InputStream is1 = url1.openStream();
while ((baLength = is1.read(ba1)) != -1) {
fos1.write(ba1, 0, baLength);
}
fos1.flush();
fos1.close();
is1.close();
}

最佳答案

在您的情况下,url 似乎被重定向到另一个下载实际内容的 URL。

您需要检查 Location header ,如果其非空,则从 header 关闭连接中获取值,并在该链接上打开新的连接。

然后,当您调用方法 getContentType() 时,它将是 application/pdf

关于java - 无法下载内容类型为 text/html 的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61383099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com