当前位置: 首页 > 面试题库 >

用Java处理下载

吴兴国
2023-03-14
问题内容

如何使用Java中的HttpResponse处理下载?我向特定站点发出了HttpGet请求-
该站点返回要下载的文件。如何处理此下载?InputStream似乎无法处理它(或者我使用的是错误的方法。)


问题答案:

假设您实际上在谈论HttpClient,这是一个SSCCE:

package com.stackoverflow.q2633002;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

public class Test {

    public static void main(String... args) throws IOException {
        System.out.println("Connecting...");
        HttpClient client = new DefaultHttpClient();
        HttpGet get = new HttpGet("http://apache.cyberuse.com/httpcomponents/httpclient/binary/httpcomponents-client-4.0.1-bin.zip");
        HttpResponse response = client.execute(get);

        InputStream input = null;
        OutputStream output = null;
        byte[] buffer = new byte[1024];

        try {
            System.out.println("Downloading file...");
            input = response.getEntity().getContent();
            output = new FileOutputStream("/tmp/httpcomponents-client-4.0.1-bin.zip");
            for (int length; (length = input.read(buffer)) > 0;) {
                output.write(buffer, 0, length);
            }
            System.out.println("File successfully downloaded!");
        } finally {
            if (output != null) try { output.close(); } catch (IOException logOrIgnore) {}
            if (input != null) try { input.close(); } catch (IOException logOrIgnore) {}
        }
    }

}

在这里工作正常。您的问题出在其他地方。



 类似资料:
  • 问题内容: 在C#中,在处理流对象时,几乎总是使用该模式。例如: 通过使用该块,我们确保代码块执行后立即在流上调用dispose。 我知道Java没有关键字的等效项,但是我的问题是,当使用Java中的对象时,是否需要做任何内务处理以确保将其处置?我在看这个代码示例,但我发现他们什么也不做。 我只是想知道Java在处理处置流方面的最佳实践是什么,或者它足以让垃圾收集器处理它。 问题答案: 通常,您必

  • 我有一个工作,处理项目的大块(1000个)。这些项目被封送到一个JSON有效负载中,并作为一个批处理发布到远程服务(在一个HTTP POST中所有1000个)。有时远程服务陷入困境,连接超时。我为此设置了跳过 如果一个块失败了,批处理重试这个块,但一次一个项目(为了找出是哪个项目导致了失败)但在我的情况下,没有一个项目导致了失败,这是整个块作为块成功或失败的情况,应该作为块重试(事实上,下降到单项

  • 本文向大家介绍带你了解Java中的异常处理(下),包括了带你了解Java中的异常处理(下)的使用技巧和注意事项,需要的朋友参考一下   今天继续讲解java中的异常处理机制,主要介绍Exception家族的主要成员,自定义异常,以及异常处理的正确姿势。 Exception家族   一图胜千言,先来看一张图。   Exception这是一个父类,它有两个儿子,IOException和RuntimeE

  • 问题内容: 我需要使用标题检查是否打开了一个外部窗口(另一个Java程序,但不受我正在使用的程序控制),如果打开了,则根据Java中的用户命令将其最大化或最小化(我只知道窗口的标题,什么也不知道)。Google只说我可以用来获取窗口句柄并使用该句柄对其进行操作,但是我找不到如何执行此操作。 我可以在此处找到有关如何使用JNI的参考: 在JavaSwing中,如何获取对窗口的Win32窗口句柄(hw

  • 主要内容:异常简介,异常类型很多事件并非总是按照人们自己设计意愿顺利发展的,经常出现这样那样的异常情况。例如: 你计划周末郊游,计划从家里出发→到达目的→游泳→烧烤→回家。但天有不测风云,当你准备烧烤时候突然天降大雨,只能终止郊游提前回家。“天降大雨”是一种异常情况,你的计划应该考虑到这样的情况,并且应该有处理这种异常的预案。 计算机程序的编写也需要考虑处理这些异常情况。 异常(exception)是在运行程序时产生的一种异

  • 我期望第1行捕获从第0行抛出的NullPointerException,但它没有发生。 但为什么呢?。 当定义了另一个catch块时,为什么第1行的NPE处理程序不能捕获它? 是因为“投掷”直接进入main()方法吗?