美文网首页SAPSAP 修行SAP札记
使用Java代码在SAP Marketing Cloud上创建C

使用Java代码在SAP Marketing Cloud上创建C

作者: _扫地僧_ | 来源:发表于2020-04-19 21:18 被阅读0次

    源代码:

    package partner1;
    
    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;
    
        public SimpleContactCreator(){
            enableHeaderWireAndContextLogging();
        }
        
        private void enableHeaderWireAndContextLogging(){
            System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog");
            System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true");
            System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire.header", "debug");
            System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient", "debug");
            System.setProperty("org.apache.commons.logging.simplelog.defaultlog", "debug");
        }
        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);
        }
    }
    
    package partner1;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Properties;
    
    public class ConfigUtil {
        
        Properties prop; 
        
        public ConfigUtil(){
            InputStream input = null;
            prop = new Properties();
            
            String propFileName = "config.properties";
    
            input = getClass().getClassLoader().getResourceAsStream(propFileName);
    
            if (input != null) {
                    try {
                        prop.load(input);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
            }
        }
        
        public String getConfig(String name){
            return prop.getProperty(name);
        }
        
        public static void main(String[] argv){
            ConfigUtil tool = new ConfigUtil();
            System.out.println("User: " + tool.getConfig("user"));
        }
    }
    
    

    config.properties文件放在resources文件夹下:

    user=mkt
    password=MY
    
    tokenurl=https://jerry.hybris.com/sap/opu/odata/sap/CUAN_COMMON_SRV/?sap-client=100
    # not batch
    contactcreateurl=https://jerry.hybris.com/sap/opu/odata/sap/CUAN_CONTACT_SRV/InteractionContacts?sap-client=100
    

    相关文章

      网友评论

        本文标题:使用Java代码在SAP Marketing Cloud上创建C

        本文链接:https://www.haomeiwen.com/subject/goiibhtx.html