Holiday REST Client Setup

This page details the steps necessary to create a REST client, using eclipse, that is able to communicate with the holiday web service.  For the client I used Jersey, and downloaded the client and core jars here.

1.  Create a new project using eclipse

2.  Add the Jersey jars to the buildpath.

3.  Go to run configurations and add the Jersey jars to the classpath

NOTE: When creating a client for the test server it is required that you add the test site's certificate to the keystore as described here,
            and then run the project with arguments (In Eclipse these should be added to the VM arguments of your project's run
            configuration):

                            -Djavax.net.ssl.trustStore=/path/to/keystore
                            -Djavax.net.ssl.trustStorePassword=changeit (default password is changeit)

4.  Create the main method

import javax.ws.rs.core.MultivaluedMap;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.core.util.MultivaluedMapImpl;

public class holidayClientMain {

  public static void main(String[] args) {
    try {
      Client client = Client.create();
      WebResource webResource = client.resource("https://www.test.hawaii.edu/its/ws/holiday/rest/closest");
      MultivaluedMap<String, String> parameters = new MultivaluedMapImpl();

      parameters.add("date", "2012-01-01");
      parameters.add("isObserved", "true");

      ClientResponse response = webResource.queryParams(parameters).accept("application.json").get(ClientResponse.class);

      if (response.getStatus() != 200) {
        throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
      }

      String output = response.getEntity(String.class);
      System.out.println("Output from Server .... \n");
      System.out.println(output);
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }
}