Saturday, February 28, 2015

How to subscribe the Contact to a EmailGroup through Java API in Eloqua

How to subscribe the Contact to a EmailGroup through Java API in Eloqua

This post explains how to create the contact in Eloqua through java.

Create the required model classes:

public class EmailGroup
{
public String type;
public String id;
public String depth;
public String description;
public String name;
public String updatedAt;
public String updatedBy;
}

public class Subscription
{
public EmailGroup emailGroup;
public String isSubscribed;
public String contactId;
public String  type;
}

RestClient class to connect to Eloqua:

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class RestClient
{
    private String authToken;
    private String baseUrl;    
    public RestClient(String user, String password, String url)
    {
       baseUrl = url;          
       String authString = user + ":" + password;
      authToken = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(authString.getBytes());        
    }          
                       
    public String execute(String uri, String method, String body)  throws Exception
    {
       String response ="";
       try
       {        
          URL url = new URL(baseUrl + uri);
          HttpURLConnection conn = (HttpURLConnection) url.openConnection();                      
          conn.setInstanceFollowRedirects(false);
          conn.setRequestMethod(method.toString());
          conn.setRequestProperty("Content-Type", "application/json");
          conn.setRequestProperty("Accept", "application/json");
          System.out.println(authToken);
          conn.setRequestProperty("Authorization", authToken);      
               
          if (method == "POST" || method == "PUT")
          {
              if(null != body){
                  conn.setDoOutput(true);
                  final OutputStream os = conn.getOutputStream();
                  os.write(body.getBytes());
                  os.flush();
                  os.close();
               }
           }
                   
           InputStream is = conn.getInputStream();
           BufferedReader rd = new BufferedReader(new InputStreamReader( is));
           String line;
           while ((line = rd.readLine()) != null)
           {
               response += line;
           }        
           rd.close();
           conn.disconnect();
         }
         catch (Exception e)
         {
            throw e;
         }
       return response;
      }
}

The Helper class to subscribe the contact to EmailGroup:

Change the Eloqua credential accordingly.

import com.google.gson.Gson;
import models.EmailGroup;
import models.Subscription;

public class SubsceiptionHelper
{
   private RestClient client;
        
   public SubsceiptionHelper(String site, String user, String password, String baseUrl)
   {
      client = new RestClient(site + "\\" + user, password, baseUrl);
   }                
            
              
    public void subscribe(String contactid,String emailGroupId) throws Exception{
       try {                     
           String response = null;
           EmailGroup emailGroup = new EmailGroup();
      emailGroup.type = "EmailGroup";
      emailGroup.id = emailGroupId;
      emailGroup.depth = "minimal";
      emailGroup.name = "Corporate";
   
      Subscription subscription = new Subscription();
      subscription.contactId = contactid;
      subscription.emailGroup = emailGroup;
      subscription.isSubscribed = "true";
      subscription.type = "ContactEmailSubscription";

      Gson gson = new Gson();
      String contactRequest = gson.toJson(subscription);
      response = client.execute("/data/contact/"+contactid+"/email/group/"+emailGroupId+"/subscription","PUT",contactRequest);
           if(response==null)
           {
          throw new Exception("Not able to subscribe");
           }
                              
        } catch (Exception e) {
           throw e;
        }  
  
     }           
              
     public static void main(String[] args) {
                              
    SubsceiptionHelper helper=new SubsceiptionHelper("companyname", "username", "password", "https://secure.p03.eloqua.com/api/rest/1.0");
        try {
            helper.subscribe("6336","3");
        } catch (Exception e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
         }
                              
   }

}

No comments:

Post a Comment