REST API:Login

From AgileApps Support Wiki
This code from the BaseClient sample program uses the Apache wink RestClient to make a REST login request and get a sessionId. It uses the Apache Wink client to post the login request, and calls a utility method defined in the BaseUtil] class to extract the sessionId from the response.
package demo.rest;

//HTTP Classes
import org.apache.wink.client.RestClient;
import org.apache.wink.client.Resource;
import org.apache.wink.client.ClientResponse;
import org.apache.commons.httpclient.HttpStatus;

// Apache Utilities
import org.apache.commons.lang.StringUtils;  

// Java Utilities
import java.util.List;
import java.io.InputStream;
import javax.ws.rs.core.MultivaluedMap; 

/*
 * A base client that handles login and logout and provides utility
 * methods for programs that use REST APIs.
 * 
 * Note:
 * This class uses the Apache wink RestClient, which makes it
 * pretty easy to make requests and handle responses. 
 */
public class BaseClient {
  
  String sessionId;
  RestClient client;
  
  String baseUrl = "https://{{domain}}";
  String username = "yourName";
  String password = "yourPassword";
  
  public String login()
  { 
    String url = baseUrl + "/networking/rest/login";
    String xml = "<platform>"
        + "<login>"
            + "<userName>"+username+"</userName>"
            + "<password>"+password+"</password>"
        + "</login>"
        + "</platform>";
    try
    {
      System.out.println("Logging in");
      this.client = new RestClient();
      Resource resource = client.resource(url);
      resource.contentType("application/xml");
      resource.accept("application/xml");
      ClientResponse response = resource.post(xml);

      // Combine cookie parameters from the response header,
      // making a cookie string for use in subsequent requests.
      MultivaluedMap<String,String> headers = response.getHeaders();  
      String cookieString = "";
      List<String> cookieParams = headers.get("Set-Cookie");
      cookieString = StringUtils.join(cookieParams, "; ");

      return cookieString;
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
    return null;
  }

  // ...Various utility methods...

  public static void main(String args[])
  {
    BaseClient client = new BaseClient();
    String cookie = client.login();
    System.out.println("Session Cookie is: " + cookie);
    client.logout();
  }
}