Как использовать HttpClient - PullRequest
1 голос
/ 16 марта 2011

В настоящее время я пытаюсь получить некоторые данные через 'uri', используя следующий код в java:

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;
        }

Однако это не работает.Кто-нибудь знает, что я здесь не так делаю?

Ответы [ 5 ]

1 голос
/ 16 марта 2011

Вы не можете распечатать входной поток как этот ... вместо этого, сделайте что-то вроде этого: -

    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
...
0 голосов
/ 08 мая 2012

Если вы получаете NetworkOnMainThreadException, то это означает, что вы вызываете client.execute (get); на основной нити, которая является исключением, брошенным на сотовый и выше. Подробнее см. http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html. Решение состоит в том, чтобы запустить это в новом потоке.

0 голосов
/ 16 марта 2011

Для чтения полученного объекта в строку используйте EntityUtils.toString(HttpEntity) или EntityUtils.toString(HttpEntity, String), если вы знаете набор символов.

0 голосов
/ 16 марта 2011

вы пытаетесь скачать файл, а getEntity используется для получения объекта для указанного вами типа.ИМХО это не сработает.

Вам нужен код, который будет фактически читать поток ответов и считывать содержимое из него ...

Что вы пытаетесь сделать?

0 голосов
/ 16 марта 2011

Это общее предположение, но не должно быть:

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

HttpData data = HttpRequest.get(uri);
System.out.println(data.content);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...