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