- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已经阅读了关于 How to download and save a file from internet using Java 的精彩讨论.但是,如果我执行下一个代码,我会得到一个损坏的 PDF。知道为什么吗?
import java.io.*;
import java.net.*;
public class PDFDownload {
public static String URL = "http://www.nbc.com/Heroes/novels/downloads/";
public static String FOLDER = "C:/Users/sdelamo/workspace/SandBox/HeroesNovel/";
public static void main(String[] args) {
String filename = "Heroes_novel_001.pdf";
try {
saveUrl(FOLDER + filename, URL + filename);
} catch (MalformedURLException e) {
System.out.println("MalformedURLException");
} catch (IOException e) {
System.out.println("IOException");
}
}
public static void saveUrl(String filename, String urlString) throws MalformedURLException, IOException {
BufferedInputStream in = null;
FileOutputStream fout = null;
try {
URL url = new URL(urlString);
in = new BufferedInputStream(url.openStream());
fout = new FileOutputStream(filename);
byte data[] = new byte[1024];
int count;
while ((count = in.read(data, 0, 1024)) != -1) {
fout.write(data, 0, count);
}
} finally {
if (in != null)
in.close();
if (fout != null)
fout.close();
}
}
}
以上代码下载 html 而不是 PDF。这是输出:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN"
"http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta name="viewport" content="width=240, user-scalable=yes" />
<HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Cache-control" content="must-revalidate">
<meta http-equiv="Cache-control" content="max-age=0">
<meta http-equiv="refresh" content="200">
<title>NBC.com: Heroes</title>
<link rel="stylesheet" type="text/css" href="/style/default.css?sid=8a9212f822e1c675330ec418bc531169" />
<link rel="stylesheet" type="text/css" href="/style/hro.css?sid=8a9212f822e1c675330ec418bc531169" />
</head>
<body>
<center><img src="http://oimg.nbcuni.com/b/ss/nbcunbcnetworkwapbu,nbcuwapsitebu/5/H.8--WAP/4aa0e4cb8b448?vid=8a9212f822e1c675330ec418bc531169&gn=NBC.com Front Door&c2=&c3=Miscellaneous&c4=&c6=m.nbc.com/show/hro&c8=TV Entertainment&c9=NBC Network&c10=&c11= | &c12= | &c25=offdeck&c27=internal&c29=&c44=D=User-Agent&r=" width="5" height="5" border="0" /></center>
<h1 id="fHeader">
<a href="/?sid=8a9212f822e1c675330ec418bc531169">
<img src="/images/nbc_logo.gif" alt="NBC : logo" border="0" />
</a>
</h1>
<h2>
<a href="/show/hro?sid=8a9212f822e1c675330ec418bc531169">
<img src="/images/shows/1221684699_Heroes_WAP_166x54.jpg" alt="Heroes : showheader" border="0" />
</a>
</h2>
<div id="tunein_nexton">
<span id="tunein">Mondays 9/8c</span>
</div><!--end #tunein_nexton-->
<div id="tunein_nexton">
<!--<span id="tunein">Mondays 8/7c</span>-->
<p id="nexton"><span class="sectiontitle"></span></p>
</div><!--end #tunein_nexton-->
<div id="featuredcontent">
<h3>FEATURED CONTENT</h3>
<table id="featuredItemsTable">
<tr>
<td><a href="/show/hro/videos.html?sid=8a9212f822e1c675330ec418bc531169"><img src="/images/hro/nbc_hro_pro_040X921HRO120FLYPSIDE_exp921_20090_543_large.jpg" alt="featured" /></a>
</td>
<td>
<span class="ftitle">Dreams</span>
<span class="fdesc">Heroes premieres Mon., Sept. 21s...</span>
</td>
</tr>
<tr>
<td><a href="/show/hro/recaps.html?sid=8a9212f822e1c675330ec418bc531169"><img src="http://origin-www.nbc.com/Heroes/images/episodes/season3/325/hro_325_01.jpg" alt="featured" height="45" width="80"/></a>
</td>
<td>
<span class="ftitle">Recap:</span>
<span class="fdesc">Season 3 Episode An Invisible Thread</span>
</td>
</tr>
<tr>
<td><a href="/show/hro/photos.html?sid=8a9212f822e1c675330ec418bc531169"><img src="http://origin-www.nbc.com/app2/img/200x200xS/scet/photos/51/3736/NUP_110031_0323.JPG" alt="featured" height="45" width="80"/></a>
</td>
<td class="finfo">
<span class="ftitle">Photo:</span>
<span class="fdesc">Heroes "Cast Photos"</span>
</td>
</tr>
</table>
</div><!--end #featuredcontent-->
<h3>HEROES</h3>
<table class="showNav">
<tr><td><a href="/show/hro/about.html?sid=8a9212f822e1c675330ec418bc531169" accesskey="1">About</a></td></tr>
<tr><td><a href="/show/hro/videos.html?sid=8a9212f822e1c675330ec418bc531169" accesskey="2">Videos</a></td></tr>
<tr><td><a href="/show/hro/recaps.html?sid=8a9212f822e1c675330ec418bc531169" accesskey="3">Episode Recaps</a></td></tr>
<tr><td><a href="/show/hro/photos.html?sid=8a9212f822e1c675330ec418bc531169" accesskey="4">Photos</a></td></tr>
<tr><td><a href="/show/hro/community.html?sid=8a9212f822e1c675330ec418bc531169" accesskey="5">Community</a></td></tr>
<tr><td><a href="/shows.shtml?sid=8a9212f822e1c675330ec418bc531169" accesskey="6">Shows List</a></td></tr>
</table>
<!-- <a href="http://www.insightexpress.com/ix/Survey.aspx?id=151580&accessCode=3161643404&sid=8a9212f822e1c675330ec418bc531169" ><img src="/images/mNBCcom_166x54.jpg" border="0"></a> -->
<div class="footer" align="center"><a href="http://m.nbc.com?sid=8a9212f822e1c675330ec418bc531169"><strong>NBC Mobile Main</strong></a> | <a href="/terms.shtml?sid=8a9212f822e1c675330ec418bc531169"><strong>Terms of Use</strong></a> | <a href="/privacy.shtml?sid=8a9212f822e1c675330ec418bc531169"><strong>Privacy</strong></a></div><div class="cpyrt" align="center">© NBC Universal, Inc.</div>
</body>
</html>
知道如何下载 PDF 吗?
解决方案
连接前设置User-Agent。
URL u = new URL(urlString);
HttpURLConnection huc = (HttpURLConnection) u.openConnection();
huc.setRequestMethod("GET");
huc.setRequestProperty("User-Agent", " Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)");
huc.connect();
in = new BufferedInputStream(huc.getInputStream());
最佳答案
您是否尝试过使用文本编辑器等工具查看下载文件的内部结构?
您会看到它包含一个 HTML 页面,而不是 PDF。可能 URL 没有指向 PDF,或者正在进行一些重定向,标准 java.net
类默认不支持。
确保 URL 正确指向 PDF。你可以使用 Apache HttpClient用于使用 HTTP 执行更复杂的操作,包括自动处理 HTTP 重定向。
注意:您发布的代码无法编译,因为您错误地放置了一个}
。
关于java - 使用 Java 下载的 PDF 已损坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1378238/
循环不起作用,我想就是这样,也许 list[i].removeChild(list[i]);我想删除 lt 列表类。 function removeDone () { var lista = do
我正在制作一个java程序,它能够使用他们的api将(主要是mp4)文件上传到主机openload.co,你可以找到here . 我的程序可以上传 mp4 视频,但无法播放。当我下载以前上传的视频并通
我在服务器端使用 jquery-file-upload 和 Python-Flask。每当我上传 100mb 以上的大文件时,上传的版本比原始版本稍大并且无法打开(已损坏)。我对 10mb block
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我有一个按钮,它是我的 Magento 主题中提供的代码的一部分,根据日期/时间戳,我没有无意中编辑它。我确信它在某些时候是有效的,但回顾一下上周我的源代码控制,我似乎无法找出哪里出了问题。 这是按钮
我有一个将一些数据写入新文件的简单函数。它可以工作,并且文件已写入,但在 MSVS Express 2013 中调试时出现上述错误。 void writeSpecToFile(const char *
我试图包含我的应用程序的国际化,并且仅出于测试目的,我在文件 Localized.string 中添加了一行简单的代码。 这是我的整个文件: "Test locale" = "Test locale"
这是代码: console.log(234, document.links); console.log(235, document.links.length); 输出显示数组中有值,但返回 0。 这是
我在尝试使用 ASP.NET MVC3 的 Ajax.BeginForm 方法时遇到了一个奇怪的问题。表单通过正确的操作属性在页面上正确呈现。但是,当提交表单时,“OnFailure”事件返回“Not
我是 10 年级的学生,我在 APCS 的最终项目是制作一个游戏/应用程序并提交代码、运行视频和书面回复。我的问题是整个类(class)都是使用 Code.org 的 AppLab 进行教学的,并且
我正在使用带有 Microsoft auth 的 azure webapp。几个月来一直工作良好。 然而今天它坏了。login.microsoftonline.com 页面因 css 和 js 加载错
我遇到了一个奇怪的问题。直到几分钟前才出现问题。在不对 less/css 文件进行任何更改的情况下(从不),引导按钮和导航栏标题的外观突然发生了变化。在第一张图片上,您可以看到按钮应该是什么样子,在第
我正在开发一个用于核心转储处理的工具。使用 sysctl 我将其设置为获取工具输入的核心转储。一切都运转良好。但今天我面临着(我不知道为什么)coredump 损坏的情况。当我将常规文件设置为核心转储
我对一个我继承但并非最初创建的网站感到非常头疼。几乎所有的样式都是通过一个样式表完成的。问题是自动调整大小不再有效,所有页面现在都以指定的最小宽度显示。随着时间的推移,各种不同的人添加了它,CSS 变
我正在尝试使用 AngularJS 甚至纯 JavaScript 将 HTML 表格转换为 XLSX。 当我使用下面的方法转换为 XLS 时,它的下载正常并且 XLS 文件正在打开。 var blob
需要根帮助导致 vtable 损坏问题(不确定这是否正在发生)。这是代码的非常简化的版本。 class CBase { public: CBase() virtual ~CBase()
一段时间未在 Play 商店中更新我的应用程序后,我尝试使用我的 keystore 对我的一个 APK 进行签名,结果发现 keystore 和别名密码不再起作用。我可以使用此要点重置的 keysto
已安装 XCode 6在 Mavericks .它不运行。将操作系统更新为 Yosemite 10.10 :现在 Xcode.app(通过 *.dmg 安装)启动失败并显示错误消息 “Xcode” i
我有一个在我的应用程序中使用的 plist 文件,我可以对其进行本地化,因此我在我的项目中得到两个条目,一个用于英语,一个用于西类牙语,当我编译运行该应用程序时,它可以工作,但当然在这个阶段内容是相同
我相信这是来自 androidsnippets.org 的 fragment - 为什么它在 Android 2.3 上不起作用?如何解决? 错误 03-05 23:19:17.479: WARN/S
我是一名优秀的程序员,十分优秀!