title: Java HttpURLConnection.getInputStream but get 401 IOException
body: <p>I am writing a REST client for CouchDB in Java. The following code should be quite standard:</p>
  
  <pre><code>    this.httpCnt.connect();
      Map&lt;String, String&gt; responseHeaders = new HashMap&lt;&gt;();
      int i = 1;
      while (true){
          String headerKey = this.httpCnt.getHeaderFieldKey(i);
          if (headerKey == null)
              break;
          responseHeaders.put(headerKey, this.httpCnt.getHeaderField(i));
          i++;
      }
      InputStreamReader reader = new InputStreamReader(this.httpCnt.getInputStream());
      StringBuilder responseBuilder = new StringBuilder();
      char[] buffer = new char[1024];
      while(true){
          int noCharRead = reader.read(buffer);
          if (noCharRead == -1){
              reader.close();
              break;
          }
          responseBuilder.append(buffer, 0, noCharRead);
      }
  </code></pre>
  
  <p>I want to test what happen if the authentication fails. However if the authentication fails, when calling <code>getInputStream</code> of the HttpURLConnection, I get directly an IOException saying the server responses 401. I suppose if the server responses something, no matter success or failure, it should be able to read whatever the server returns. And I am sure in this case the server does return some text in the body, since if I do a <code>GET</code> to the server using curl and the authentication fails, I get a JSON object as the response body with some error messages in it.</p>
  
  <p>Is there any way to still get the response body even if 401?</p>