ここで尋ねられた同様の質問からの解決策の引用:-
HttpURLConnection
接続を維持しているときに使用される接続プールが壊れているため、サーバーによって閉じられた接続を使用しようとします。デフォルトでは、Android はすべての接続で KeepAlive を設定します。
System.setProperty("http.keepAlive", "false");
は、すべての接続に対して KeepAlive を無効にする回避策であるため、接続プールのバグを回避できます。
conn.setRequestProperty("Connection","Keep-Alive");
この特定の接続に対して KeepAlive をオンにし、本質的に何をするかを逆にSystem.setProperty("http.keepAlive", "false");
します。
また、接続セットアップを終了する場所が明確になるため、常に明示的に connect() を呼び出します。このメソッドの呼び出しがオプションかどうかはわかりません。
System.setProperty("http.keepAlive", "false");
HttpURLConnection conn = (HttpURLConnection) mURL.openConnection();
conn.setUseCaches(false);
conn.setRequestProperty("User-Agent", useragent);
conn.setConnectTimeout(30000);
conn.setDoOutput(true);
conn.setDoInput(true);
consumer.sign(conn);
conn.connect();
InputSource is = new InputSource(conn.getInputStream());