Java 如何使用HttpClient

Java 如何使用HttpClient,java,android,httpclient,Java,Android,Httpclient,我目前正在尝试使用java中的以下代码通过“uri”获取一些数据: HttpClient client = new DefaultHttpClient(); HttpGet get = new HttpGet(uri); HttpResponse response = client.execute(get); HttpEntity entity = response.getEntity(); if(entity != null){

我目前正在尝试使用java中的以下代码通过“uri”获取一些数据:

HttpClient client = new DefaultHttpClient();
        HttpGet get = new HttpGet(uri);
        HttpResponse response = client.execute(get);
        HttpEntity entity = response.getEntity();
        if(entity != null){
            InputStream stream = entity.getContent();
            callString = stream.toString();
            return callString;
        }

然而,这是行不通的。有人知道我做错了什么吗?

这完全是猜测,但不应该是:

String uri = "ichart.finance.yahoo.com/table.csv?s=MSFT"

HttpData data = HttpRequest.get(uri);
System.out.println(data.content);

这完全是猜测,但不应该是:

String uri = "ichart.finance.yahoo.com/table.csv?s=MSFT"

HttpData data = HttpRequest.get(uri);
System.out.println(data.content);

您正试图下载一个文件,使用getEntity获取指定类型的对象。我知道这行不通

您需要编写实际读取响应流并从中读取内容的代码


您试图做什么?

您试图下载一个文件,使用getEntity获取指定类型的对象。我知道这行不通

您需要编写实际读取响应流并从中读取内容的代码


你想做什么?

你不能像那样打印输入流。。。相反,可以这样做:-

    HttpClient client = new DefaultHttpClient();
    HttpGet get = new HttpGet("http://ichart.finance.yahoo.com/table.csv?s=MSFT");
    HttpResponse response = client.execute(get);
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        Scanner scanner = new Scanner(entity.getContent());
        while (scanner.hasNextLine()) {
            System.out.println(scanner.nextLine());
        }
    }
1994-02-02,84.75,85.50,84.00,84.00,40924800,2.09
1994-02-01,85.00,85.75,84.50,85.12,44003200,2.12
1994-01-31,85.25,85.87,84.75,85.12,62566400,2.12
1994-01-28,84.50,85.50,84.25,84.87,41875200,2.11
1994-01-27,84.00,84.75,83.25,84.25,51129600,2.10
1994-01-26,85.00,85.00,84.00,84.25,50489600,2.10
1994-01-25,85.25,85.37,84.00,85.12,70361600,2.12
...
打印输出如下所示:-

    HttpClient client = new DefaultHttpClient();
    HttpGet get = new HttpGet("http://ichart.finance.yahoo.com/table.csv?s=MSFT");
    HttpResponse response = client.execute(get);
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        Scanner scanner = new Scanner(entity.getContent());
        while (scanner.hasNextLine()) {
            System.out.println(scanner.nextLine());
        }
    }
1994-02-02,84.75,85.50,84.00,84.00,40924800,2.09
1994-02-01,85.00,85.75,84.50,85.12,44003200,2.12
1994-01-31,85.25,85.87,84.75,85.12,62566400,2.12
1994-01-28,84.50,85.50,84.25,84.87,41875200,2.11
1994-01-27,84.00,84.75,83.25,84.25,51129600,2.10
1994-01-26,85.00,85.00,84.00,84.25,50489600,2.10
1994-01-25,85.25,85.37,84.00,85.12,70361600,2.12
...

您不能像那样打印输入流。。。相反,可以这样做:-

    HttpClient client = new DefaultHttpClient();
    HttpGet get = new HttpGet("http://ichart.finance.yahoo.com/table.csv?s=MSFT");
    HttpResponse response = client.execute(get);
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        Scanner scanner = new Scanner(entity.getContent());
        while (scanner.hasNextLine()) {
            System.out.println(scanner.nextLine());
        }
    }
1994-02-02,84.75,85.50,84.00,84.00,40924800,2.09
1994-02-01,85.00,85.75,84.50,85.12,44003200,2.12
1994-01-31,85.25,85.87,84.75,85.12,62566400,2.12
1994-01-28,84.50,85.50,84.25,84.87,41875200,2.11
1994-01-27,84.00,84.75,83.25,84.25,51129600,2.10
1994-01-26,85.00,85.00,84.00,84.25,50489600,2.10
1994-01-25,85.25,85.37,84.00,85.12,70361600,2.12
...
打印输出如下所示:-

    HttpClient client = new DefaultHttpClient();
    HttpGet get = new HttpGet("http://ichart.finance.yahoo.com/table.csv?s=MSFT");
    HttpResponse response = client.execute(get);
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        Scanner scanner = new Scanner(entity.getContent());
        while (scanner.hasNextLine()) {
            System.out.println(scanner.nextLine());
        }
    }
1994-02-02,84.75,85.50,84.00,84.00,40924800,2.09
1994-02-01,85.00,85.75,84.50,85.12,44003200,2.12
1994-01-31,85.25,85.87,84.75,85.12,62566400,2.12
1994-01-28,84.50,85.50,84.25,84.87,41875200,2.11
1994-01-27,84.00,84.75,83.25,84.25,51129600,2.10
1994-01-26,85.00,85.00,84.00,84.25,50489600,2.10
1994-01-25,85.25,85.37,84.00,85.12,70361600,2.12
...

将结果实体读取为字符串使用或您知道字符集。

将结果实体读取为字符串使用或您知道字符集。

如果您获得NetworkMainThreadException,则表示您正在调用client.execute(get);在主线程上,这是在Honeycom和更高版本上抛出的异常。有关详细信息,请参阅。解决方案是在一个新线程中运行它

如果您正在获取NetworkOnMainThreadException,则表示您正在调用client.execute(get);在主线程上,这是在Honeycom和更高版本上抛出的异常。有关详细信息,请参阅。解决方案是在一个新线程中运行它

“这不起作用”不是特别有用的信息。会发生什么?什么事不会发生?你有例外吗?请共享它们。这当前在try-catch块中,捕获被触发。URI是“这不起作用”不是特别有用的信息。会发生什么?什么事不会发生?你有例外吗?请共享它们。这当前在try-catch块中,捕获被触发。URI是我正在尝试下载此文件,然后对其进行分析,以便将MSFT的股价输入数组。我正在尝试下载此文件,然后对其进行分析,以便将MSFT的股价输入数组。出于某种原因,这在我的活动中不起作用。是否有其他方法来解析响应?出于某种原因,这在我的活动中不起作用。是否有其他方法来解析响应?