• 使用Java代码在SAP Marketing Cloud上创建Contact数据


    源代码:

    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
    
  • 相关阅读:
    spring Pom jar包版本管理
    Liunx 命令整理
    Centos&Nginx
    docker-compose
    .net core MemoryCache缓存
    .net core 程序集帮助类
    .NET CORE API Swagger
    Spring Boot (1)
    SQL Server生成实体
    1、认识和安装MongoDB
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/12775909.html
Copyright © 2020-2023  润新知