我们可以使用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);
}
}

上述代码里,我硬编码了一个Contact的姓为SAP Wang,名为SAP diablo,

执行之后, 打印出API消费成功的201代码:

硬编码的数据能够在Marketing Cloud里观察到:

上述源代码在我的github上也能看到:https://github.com/i042416/JavaTwoPlusTwoEquals5/blob/master/src/partner1/SimpleContactCreator.java

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

如何用Java代码在SAP Marketing Cloud里创建contact数据的更多相关文章

  1. SAP Marketing Cloud里的contact main facet是什么意思

    界面如下: Basically, contact data for SAP Hybris Marketing can be loaded from various sources, such as a ...

  2. 如何在Marketing Cloud里创建extension field扩展字段

    首先在Marketing Cloud里找到创建扩展字段的tile入口,搜索关键字extension: 这会进入Fiori应用"Custom fields",能看到系统里所有创建好的 ...

  3. 使用nodejs实现OData的batch操作在Marketing Cloud里读取contact信息

    我们先来看看Marketing Cloud系统里的contact信息: 一共1218374条数据. 我们用如下的nodejs代码通过OData来获取这些数据: var request = requir ...

  4. SAP Marketing Cloud功能简述(四) : 线索和客户管理

    这个系列的前三篇文章Grace Dong已经给大家带来了下面的内容: SAP Marketing Cloud功能简述(一) : Contacts和Profiles SAP Marketing Clou ...

  5. SAP Marketing Cloud功能简述(三) 营销活动内容设计和产品推荐

    Grace的前两篇文章: SAP Marketing Cloud功能简述(一) : Contacts和Profiles SAP Marketing Cloud功能简述(二) : Target Grou ...

  6. SAP Marketing Cloud功能简述(二) : Target Group

    这个系列的第一篇文章 SAP Marketing Cloud功能简述(一) : Contacts和Profiles,我向大家介绍了SAP Marketing Cloud里的Contacts和Profi ...

  7. SAP Marketing Cloud功能简述(一) : Contacts和Profiles

    Dong Grace是Jerry的同事,目前是SAP成都研究院数字创新空间团队的一名实习生,明年7月才毕业.这篇文章是Grace对SAP Marketing Cloud功能梳理的一篇学习笔记,因为篇幅 ...

  8. SAP Marketing Cloud的Contact导入配置和数据合并原理

    SAP很多系统的主数据都支持从外部系统导入,SAP Marketing Cloud也是如此,contact主数据可以来自Hybris Commerce,CRM,ERP或者Twitter,Faceboo ...

  9. 使用postman修改SAP Marketing Cloud contact主数据

    Marketing Cloud里的contact主数据,创建成功后也不是所有字段都能够被修改.在Personal data区域的字段是可以被修改的. 比如我在"客户属性"字段里维护 ...

随机推荐

  1. C++ STL 排列 next_permutation prev_permutation

    #include <iostream>#include <algorithm>#include <vector> using namespace std; int ...

  2. PAT 甲级 1024 Palindromic Number (25 分)(大数加法,考虑这个数一开始是不是回文串)

    1024 Palindromic Number (25 分)   A number that will be the same when it is written forwards or backw ...

  3. Python简单遍历字典及删除元素的方法

    Python简单遍历字典及删除元素的方法 这篇文章主要介绍了Python简单遍历字典及删除元素的方法,结合实例形式分析了Python遍历字典删除元素的操作方法与相关注意事项,需要的朋友可以参考下 具体 ...

  4. 如何不让Excel图表随源数据改变而改变

    如何不让Excel图表随源数据改变而改变 一般我们在用Excel时,经常会碰到一些问题,比如,如何才能不让Excel图表随源数据改变而改变呢,下面就谈一下,一般在默认情况下,Excel的图表在一个区域 ...

  5. 深入理解channels - kavya Joshi

    From: 翻译blog地址 作者:大桥下的蜗牛 这是GopherCon 2017大会上,go开发专家 kavya Joshi 的一篇关于 channel 的演讲,讲的通俗易懂. Understand ...

  6. django 之(四) --- 级联|截流

    登陆注册 登陆注册实现 settings.py # redis配置 CACHES = { "default": { "BACKEND": "djang ...

  7. SQL注入(字符型)

       靶场:sqli-labs @SQLi最重要的一点:别上来就对着输入框注入,完整语句写出来,始终在语句中写完整的,最后把完整的一部分截取出来作为输入 @URL编码:为避免歧义,URL中,如 %2b ...

  8. Python学习笔记——类和对象

    类和对象 1. 一个例子 # 对象 = 属性 + 方法 # Python 中的类名称约定首字母大写,而 Python 函数名首字母小写 class Turtle: #属性 color = 'green ...

  9. Design Circular Deque

    Design your implementation of the circular double-ended queue (deque). Your implementation should su ...

  10. 【3.4】innodb存储引擎

    [1]Innodb 与 Myisam 的区别 1.InnoDB支持事物,而MyISAM不支持事物 2.InnoDB支持行级锁,而MyISAM支持表级锁 3.InnoDB支持MVCC, 而MyISAM不 ...