locoboy
locoboy

Reputation: 38960

How to use HttpClient

I'm currently trying to get some data via a 'uri' using the following code in 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;
        }

However this isn't working. Does anyone know what I'm doing wrong here?

Upvotes: 1

Views: 4326

Answers (5)

filitchp
filitchp

Reputation: 615

If you are getting NetworkOnMainThreadException then that means you are calling client.execute(get); on the main thread which is an exception thrown on Honeycomb and higher. See http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html for details. The solution is to run this in a new thread.

Upvotes: 0

Nic Strong
Nic Strong

Reputation: 6592

To read the resulting entity to a String use EntityUtils.toString(HttpEntity) or EntityUtils.toString(HttpEntity, String) if you know the character set.

Upvotes: 0

limc
limc

Reputation: 40186

You cannot print out the input stream like that... instead, do something like this:-

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

The printout looks like this:-

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
...

Upvotes: 1

allthenutsandbolts
allthenutsandbolts

Reputation: 1523

you are trying to download a file and getEntity is used get an object for a type you have specified. IMHO this wont work.

You need to code which will actually read the response stream and read contents out of it...

What are you trying to do ?

Upvotes: 0

Nix
Nix

Reputation: 58632

Its a total guess but shouldn't it be:

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

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

Upvotes: 0

Related Questions