我想从嵌入式设备上运行的网络服务器下载二进制文件。使用该文件后,可以在基本的http身份验证后手动下载该文件
URL:http://10.10.10.10/config.bin
...现在我想用一个简单的Java应用程序自动化这个过程。通过使用我设法下载文件的基本java工具:
URL mlrrl = new URL(url);
HttpURLConnection con = (HttpURLConnection) mlrUrl.openConnection();
con.setRequestMethod("GET");
con.setAllowUserInteraction(false);
con.setDoInput(true);
con.setDoOutput(true);
con.setConnectTimeout(10000);
con.setRequestProperty("Authorization", "Basic " + authStringEnc);
InputStream stream = con.getInputStream();
BufferedInputStream in = new BufferedInputStream(stream);
FileOutputStream file = new FileOutputStream("configDown.bin");
BufferedOutputStream out = new BufferedOutputStream(file);
int i;
while ((i = in.read()) != -1) {
out.write(i);
}
out.flush();
这似乎工作正常!与手动(通过Browser-Webinterface)下载的文件相比,生成的文件具有相同的长度,但在使用十六进制编辑器打开两个二进制文件后,它们是不同的。
我的问题:
答案 0 :(得分:1)
使用(已弃用的)Apache Commons HttpClient(http://hc.apache.org/httpclient-3.x/)的恕我直言是最简单的方法。或者,您可以使用新的和(据称)改进的HttpComponents(http://hc.apache.org/)。
答案 1 :(得分:0)
我无法解释原因,但错误的属性“setDoOutput”=“true”可能会影响下载文件的内容。将值设置为“false”为我解决了这个问题!