title: Http Basic Authentication in Java using HttpClient?
body: <p>I am trying to mimic the functionality of this curl command in Java:</p>
  
  <pre><code>curl --basic --user username:password -d "" http://ipaddress/test/login
  </code></pre>
  
  <p>I wrote the following using Commons HttpClient 3.0 but somehow ended up getting an <code>500 Internal Server Error</code> from the server. Can someone tell me if I'm doing anything wrong?</p>
  
  <pre><code>public class HttpBasicAuth {
  
      private static final String ENCODING = "UTF-8";
  
      /**
       * @param args
       */
      public static void main(String[] args) {
          // TODO Auto-generated method stub
          try {
  
              HttpClient client = new HttpClient();
  
              client.getState().setCredentials(
                      new AuthScope("ipaddress", 443, "realm"),
                      new UsernamePasswordCredentials("test1", "test1")
                      );
  
              PostMethod post = new PostMethod(
                      "http://address/test/login");
  
              post.setDoAuthentication( true );
  
              try {
                  int status = client.executeMethod( post );
                  System.out.println(status + "\n" + post.getResponseBodyAsString());
              } finally {
                  // release any connection resources used by the method
                  post.releaseConnection();
              }
          } catch (Exception e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
      }
     } 
  </code></pre>
  
  <p>And I later tried a Commons HttpClient 4.0.1 but still the same error:</p>
  
  <pre><code>import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.InputStreamReader;
  
  import org.apache.http.HttpEntity;
  import org.apache.http.HttpResponse;
  import org.apache.http.auth.AuthScope;
  import org.apache.http.auth.UsernamePasswordCredentials;
  import org.apache.http.client.ClientProtocolException;
  import org.apache.http.client.methods.HttpPost;
  import org.apache.http.impl.client.DefaultHttpClient;
  
  
  public class HttpBasicAuth {
  
      private static final String ENCODING = "UTF-8";
  
      /**
       * @param args
       */
      public static void main(String[] args) {
          // TODO Auto-generated method stub
  
          try {
              DefaultHttpClient httpclient = new DefaultHttpClient();
  
              httpclient.getCredentialsProvider().setCredentials(
                      new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), 
                      new UsernamePasswordCredentials("test1", "test1"));
  
              HttpPost httppost = new HttpPost("http://host:post/test/login");
  
              System.out.println("executing request " + httppost.getRequestLine());
              HttpResponse response;
              response = httpclient.execute(httppost);
              HttpEntity entity = response.getEntity();
  
              System.out.println("----------------------------------------");
              System.out.println(response.getStatusLine());
              if (entity != null) {
                  System.out.println("Response content length: " + entity.getContentLength());
              }
              if (entity != null) {
                  entity.consumeContent();
              }
  
              httpclient.getConnectionManager().shutdown();  
          } catch (ClientProtocolException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
  }
  </code></pre>