What is the best Java library to use for HTTP POST, GET etc.? [closed]

imho: Apache HTTP Client

usage example:

import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;
import org.apache.commons.httpclient.params.HttpMethodParams;

import java.io.*;

public class HttpClientTutorial {

  private static String url = "http://www.apache.org/";

  public static void main(String[] args) {
    // Create an instance of HttpClient.
    HttpClient client = new HttpClient();

    // Create a method instance.
    GetMethod method = new GetMethod(url);

    // Provide custom retry handler is necessary
    method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, 
            new DefaultHttpMethodRetryHandler(3, false));

    try {
      // Execute the method.
      int statusCode = client.executeMethod(method);

      if (statusCode != HttpStatus.SC_OK) {
        System.err.println("Method failed: " + method.getStatusLine());
      }

      // Read the response body.
      byte[] responseBody = method.getResponseBody();

      // Deal with the response.
      // Use caution: ensure correct character encoding and is not binary data
      System.out.println(new String(responseBody));

    } catch (HttpException e) {
      System.err.println("Fatal protocol violation: " + e.getMessage());
      e.printStackTrace();
    } catch (IOException e) {
      System.err.println("Fatal transport error: " + e.getMessage());
      e.printStackTrace();
    } finally {
      // Release the connection.
      method.releaseConnection();
    }  
  }
}

some highlight features:

  • Standards based, pure Java, implementation of HTTP versions 1.0
    and 1.1

    • Full implementation of all HTTP methods (GET, POST, PUT, DELETE,
      HEAD, OPTIONS, and TRACE) in an
      extensible OO framework.
    • Supports encryption with HTTPS (HTTP over SSL) protocol.
    • Granular non-standards configuration and tracking.
    • Transparent connections through HTTP proxies.
    • Tunneled HTTPS connections through HTTP proxies, via the CONNECT
      method.
    • Transparent connections through SOCKS proxies (version 4 & 5) using
      native Java socket support.
    • Authentication using Basic, Digest and the encrypting NTLM (NT
      Lan Manager) methods.
    • Plug-in mechanism for custom authentication methods.
    • Multi-Part form POST for uploading large files.
    • Pluggable secure sockets implementations, making it easier to
      use third party solutions
    • Connection management support for use in multi-threaded
      applications. Supports setting the
      maximum total connections as well as
      the maximum connections per host.
      Detects and closes stale connections.
    • Automatic Cookie handling for reading Set-Cookie: headers from the
      server and sending them back out in a
      Cookie: header when appropriate.
    • Plug-in mechanism for custom cookie policies.
    • Request output streams to avoid buffering any content body by
      streaming directly to the socket to
      the server.
    • Response input streams to efficiently read the response body by
      streaming directly from the socket to
      the server.
    • Persistent connections using KeepAlive in HTTP/1.0 and persistance
      in HTTP/1.1
    • Direct access to the response code and headers sent by the server.
    • The ability to set connection timeouts.
    • HttpMethods implement the Command Pattern to allow for parallel
      requests and efficient re-use of
      connections.
    • Source code is freely available under the Apache Software License.

Leave a Comment