Hi folks, I should be able to spend a few hours with coding this week-end. I'd like to tackle some details I noticed while discussing "entities and connections" with Oleg, and while working on http-async:
1. In order to keep a connection alive even if the application has not read the response entity completely, on needs to call InputStream.close() on the input stream returned by HttpEntity.getContent(). If entities are layered, calling getContent() might trigger the creation of wrapping input streams, just to close them immediately afterwards. If an entity is not repeatable and has been read completely, this might even trigger an exception. 2. HttpClientConnection.receiveResponseEntity initializes a response object with an entity, but there is no way of telling whether that entity depends on the connection, or whether it is already buffered completely in memory. The DefaultHttpClientConnection will always return an entity that depends on the connection, but there might be others. Also, response postprocessing might replace a streamed entity with a buffered one. 3. ByteArrayEntity and StringEntity are outgoing entities only. There is no constructor or factory method to have them read and buffer another (incoming) entity like the BasicHttpEntity. Most of the code to do this is already available in class EntityUtil. This is rather cosmetic. The idea I have about 1 and 2 is to add two methods to the HttpEntity interface (method names subject to change): public void disconnect(); public boolean isConnected(); If you've got helpful suggestions - or objections - I wouldn't mind reading them before I start coding. There's a snooker broadcast this evening, so I probably won't start until tomorrow ;-) cheers, Roland --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
