- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
下面的代码片段从某个 URL 下载文件并将其保存到本地文件。小菜一碟。这里可能有什么问题?
protected long download(ProgressMonitor montitor) throws Exception{
long size = 0;
DataInputStream dis = new DataInputStream(is);
int read = 0;
byte[] chunk = new byte[chunkSize];
while( (read = dis.read(chunk)) != -1){
os.write(chunk, 0, read);
size += read;
if(montitor != null)
montitor.worked(read);
}
chunk = null;
dis.close();
os.flush();
os.close();
return size;
}
我在这里发布问题的原因是它在 99.999% 的时间内都有效,并且只要运行此代码的计算机上安装了防病毒软件或其他一些保护软件,它就不会按预期工作。我盲目地指指点点,因为每当我停止(或禁用)它时,代码都会再次完美运行。这种干扰的最终结果是下载文件的 MD5 与预期不符,一个全新的传奇开始了。
所以,问题是 - 某些智能“保护”软件真的有可能在我不知情的情况下更改来自 URL 的实际流吗?如果是 - 你如何处理这个问题? (已通过 Kasperksy 和 Norton 产品验证)。
编辑-1:显然我已经解决了这个问题,它与防病毒软件无关。下载是从 FTP 服务器(特别是 FileZilla)进行的,我们在客户端使用 apache commons ftp。我所做的是前往 FTP 服务器并在下载过程中终止连接(将其踢出)。我预计 is.read(..) 会在客户端抛出 IOException,但这从未发生过。相反,is.read(..) 返回 -1,表示流中不再有数据。这绝对是出乎意料的,并解释了为什么有时我会得到部分文件。然而,这并不能解释为什么有时数据也会被更改。
最佳答案
是的,我经常遇到这种情况。在我的例子中,它是由我公司网络上的 Websense 透明 HTTP 代理引起的。最严重的问题是由返回 200 OK 的 block 页面引起的。
您是否每次都遇到相同或相似的损坏?例如,您是否得到一些 HTML 解释请求被阻止的原因?您可能做的最好的事情是将下载数据的前几个字节与 block 页面中的某些文本进行比较,并在这种情况下抛出异常。
编辑:根据您的更新,您是否已将 FTP 客户端设置为图像/二进制模式?
关于java - 谁在篡改我的数据流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11985236/
大家好,我是沙漠尽头的狼。 本文首发于 Dotnet9 ,介绍使用 Lib.Harmony 库拦截第三方 .NET 库方法,达到不修改其源码并能实现修改方法逻辑、预期行为的效果,并
我有Helm Applciations使用 Terraform 的 helm_release 资源与 Terraform 一起部署。 有时由于以下一个或多个原因,我的 Kubernetes Pod 将
我有Helm Applciations使用 Terraform 的 helm_release 资源与 Terraform 一起部署。 有时由于以下一个或多个原因,我的 Kubernetes Pod 将
我们开发了一个 Javascript 文件供客户使用。 Javascript 片段对其运行的网站进行屏幕截图,然后通过 jQuery.post() 将其发送回我们的服务器 我们行业的性质意味着我们必须
我在本地主机上运行我的测试站点。 当我用 URL 加载它时: localhost/projects/forums/index.php 它看起来像这样(符合预期) 但是当 我给 URL: localho
我正在 中共同开发一个简单的网络应用程序 rails 3.0.9 我已经意识到可能通过恶意请求篡改 session_id。请注意,这是我的第一个 RoR 应用程序,所以我的概念可能完全错误。 当前的应
我返回了以下 JSON 数据,但由于某种原因,Javascript 或 jQuery ajax 似乎重新组织了项目列表。服务器返回按item.title字母顺序排序的数据(已验证)... 下面的 JS
背景 我是一名经验丰富的 Web 开发人员(主要使用 Python 和 CherryPy),之前从头开始实现过安全 session 管理,现在正在学习 Rails。我正在调查 session 暴露的
我正在使用 MVC3、.NET4.5、C#、Razor。 我在 Codeproject 之外重用了 Albin 的一些非常有用的代码,通过添加哈希来防止 URL 篡改。主要运行良好。 然而…… 我现在
我是一名优秀的程序员,十分优秀!