如何用Java程式碼在SAP Marketing Cloud裡建立contact資料

i042416發表於2019-05-26

我們可以使用SAP Marketing Cloud提供的Contact create OData API在第三方應用裡建立Contact主資料.

API地址:/sap/opu/odata/sap/CUAN_CONTACT_SRV/InteractionContacts

示例程式碼只有100多行:

import java.io.IOException;import java.io.UnsupportedEncodingException;import java.net.URI;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.StatusLine;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.HttpClientBuilder;import sun.misc.BASE64Encoder;public class SimpleContactCreator {    private ConfigUtil mConfigUtil = new ConfigUtil();
    
    HttpClient m_httpClient;    private String getBasicAuth(){        final String text = mConfigUtil.getConfig("user") + ":" + mConfigUtil.getConfig("password");        
        BASE64Encoder encoder = new BASE64Encoder();
        String credentials = "basic " + encoder.encode(text.getBytes());        return credentials;
    }    
    private HttpClient getHttpClient() {        if (this.m_httpClient == null) {            this.m_httpClient = HttpClientBuilder.create().build();
        }        return this.m_httpClient;
    }    
    private String getCSRFToken(){
        
        String url = mConfigUtil.getConfig("tokenurl");
        System.out.println("fetch CSRF token via url: " + url);        final HttpGet get = new HttpGet(url);
        get.setHeader("Authorization", getBasicAuth());
        get.setHeader("Cache-Control", "no-cache");
        get.setHeader("content-type", "application/json");
        get.setHeader("Accept", "application/json");
        get.setHeader("x-csrf-token", "fetch");
        HttpResponse response;
        String token = null;        try {
            response = getHttpClient().execute(get);
            StatusLine statusLine = response.getStatusLine();            int code = statusLine.getStatusCode();
            System.out.println("Status code: " + code);
            System.out.println("reason: " + statusLine.getReasonPhrase());
            
            token = response.getFirstHeader("x-csrf-token").getValue();
            System.out.println("token: " + token);
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException | UnsupportedOperationException e) {
            e.printStackTrace();
        }        return token;
    }    
    public void run(String body){
        String token = getCSRFToken();
        createContact(token, body);
    }    private void createContact(String token, String body){        final HttpPost post = new HttpPost(
            URI.create(mConfigUtil.getConfig("contactcreateurl")));
        post.setHeader("Authorization", getBasicAuth());
        post.setHeader("Content-Type", "application/json");
        post.setHeader("X-CSRF-Token", token);
        HttpEntity entity = null;        try {
            entity = new StringEntity(body);
        } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
        }
        post.setEntity(entity);
        HttpResponse response = null;        try {
            response = getHttpClient().execute(post);
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("Response statusCode for Batch => "
            + response.getStatusLine().getStatusCode());
    }    public static void main(String[] args) {
        SimpleContactCreator tool = new SimpleContactCreator();
        String body = "{\"IsConsumer\":true," + 
                      "\"Filter\":{\"MarketingArea\":\"CXXGLOBAL\"}," + 
                      "\"__metadata\":{\"type\":\"CUAN_CONTACT_SRV.InteractionContact\"}," + 
                      "\"FirstName\":\"SAP Diablo\",\"LastName\":\"SAP Wang\",\"Country\":\"CN\"," + 
                      "\"EMailAddress\":\"seya@sap.com\",\"YY1_WECHATID_MPS\":\"i042416\"," + 
                      "\"YY1_FACEID_MPS\":\"d042416\"}";
        tool.run(body);
    }
}
如何用Java程式碼在SAP Marketing Cloud裡建立contact資料

上述程式碼裡,我硬編碼了一個Contact的姓為SAP Wang,名為SAP diablo,

執行之後, 列印出API消費成功的201程式碼:

如何用Java程式碼在SAP Marketing Cloud裡建立contact資料

硬編碼的資料能夠在Marketing Cloud裡觀察到:

如何用Java程式碼在SAP Marketing Cloud裡建立contact資料

上述原始碼在我的github上也能看到: https://github.com/i042416/JavaTwoPlusTwoEquals5/blob/master/src/partner1/SimpleContactCreator.java

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":


如何用Java程式碼在SAP Marketing Cloud裡建立contact資料


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2645583/,如需轉載,請註明出處,否則將追究法律責任。

相關文章