Android - HttpUrlConnection is not closing. Eventually results to SocketException

android, httpurlconnection, java

Solution

I finally found a workaround. It seems that Jellybean is having an issue on "Keep-Alive" connections. I just added Connection=Close to my request header and now all is working. Doing a netstat, I see that the connections are now being closed and I no longer get the SocketException due to "Too many open files".

Problem

I am encountering some problems with the HttpUrlConnection in devices running Jellybean (4.1 - 4.3) wherein connections are not closed and results to a SocketException "Too many open files" after executing a number of times. I do call HttpUrlConnection.disconnect() and am closing all the Inputstream, Outputstream, Reader and Writers in a finally block. Going to adb shell and executing a `netstat` shows all the connections created by the application are left in CLOSE_WAIT state. ``` InputStream inputStream = httpUrlConnection.getInputStream(); // After calling inputStream.read() then the problem occurs. I think the // inputstream doesn't get closed even after calling close in a finally block. // The InputStream is a ChunkedInputStream if that helps. ``` I have tried other devices running on 2.3.3, 4.0.3 and 4.4 and did not encounter this issue. Is there another way that I can manually close the connections?

Original source