I'm writing a utility that will retrieve some metadata about swf (flash)
files and I'd like to use httpclient to read the data but I want clarity on
the necessity to read the entire stream.

The information I need is all in the first few bytes of the file, and the
files could potentially be quite large so I don't want to read them in
their entirety.  I'd like to just read what I need and then close the
connection.

Here's a little test snippet, note that SWFInfo is closing the input stream
on the response entity:

    public static void main(String[] args) throws Exception {

        CloseableHttpClient client = buildCloseableClient();
        HttpGet get = new HttpGet("http://localhost/Cat.swf";);
        for (int i = 0; i < 10000; i++) {
            try (CloseableHttpResponse response = client.execute(get)) {
                SWFInfo info =
SWFInfo.getInfo(response.getEntity().getContent());
                System.out.println(i + ": " + info.width + "," +
info.height);
            }
        }
    }


This test executes successfully, suggesting that it's OK but I want to
double check that I won't be causing any types of resource usage problems.
Note that we're using HttpClient in other parts of our application, but
those are pooled connections that are constructed differently.


Thanks,

Dan

Reply via email to