如何用Java代码在SAP Marketing Cloud里创建contact数据
我们可以使用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数据的更多相关文章
- SAP Marketing Cloud里的contact main facet是什么意思
界面如下: Basically, contact data for SAP Hybris Marketing can be loaded from various sources, such as a ...
- 如何在Marketing Cloud里创建extension field扩展字段
首先在Marketing Cloud里找到创建扩展字段的tile入口,搜索关键字extension: 这会进入Fiori应用"Custom fields",能看到系统里所有创建好的 ...
- 使用nodejs实现OData的batch操作在Marketing Cloud里读取contact信息
我们先来看看Marketing Cloud系统里的contact信息: 一共1218374条数据. 我们用如下的nodejs代码通过OData来获取这些数据: var request = requir ...
- SAP Marketing Cloud功能简述(四) : 线索和客户管理
这个系列的前三篇文章Grace Dong已经给大家带来了下面的内容: SAP Marketing Cloud功能简述(一) : Contacts和Profiles SAP Marketing Clou ...
- SAP Marketing Cloud功能简述(三) 营销活动内容设计和产品推荐
Grace的前两篇文章: SAP Marketing Cloud功能简述(一) : Contacts和Profiles SAP Marketing Cloud功能简述(二) : Target Grou ...
- SAP Marketing Cloud功能简述(二) : Target Group
这个系列的第一篇文章 SAP Marketing Cloud功能简述(一) : Contacts和Profiles,我向大家介绍了SAP Marketing Cloud里的Contacts和Profi ...
- SAP Marketing Cloud功能简述(一) : Contacts和Profiles
Dong Grace是Jerry的同事,目前是SAP成都研究院数字创新空间团队的一名实习生,明年7月才毕业.这篇文章是Grace对SAP Marketing Cloud功能梳理的一篇学习笔记,因为篇幅 ...
- SAP Marketing Cloud的Contact导入配置和数据合并原理
SAP很多系统的主数据都支持从外部系统导入,SAP Marketing Cloud也是如此,contact主数据可以来自Hybris Commerce,CRM,ERP或者Twitter,Faceboo ...
- 使用postman修改SAP Marketing Cloud contact主数据
Marketing Cloud里的contact主数据,创建成功后也不是所有字段都能够被修改.在Personal data区域的字段是可以被修改的. 比如我在"客户属性"字段里维护 ...
随机推荐
- [SQL]as的是否可以省略的问题
数据库中as主要作用是起别名,常规来说都可以省略,但是为了增加可读性,不建议省略.
- python3 __mian和__name__的区别
1.新建 test.py 模块: def GetModuleName(): print('__name__ = ', __name__) def PrintName(): print('PrintNa ...
- logback 和 log4j对比,及相关配置
Logback 一.logback的介绍 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和log ...
- 工具的更新换代 总是要折腾一下Windows10下Java Web 开发环境的配置
Windows10下Java Web 开发环境的配置 由于经常性遗忘,所以整理一下 Java Web 开发环境的搭建与配置,利人利己 主要分为以下几步,需要可以挑着看 Windows下 JDK 的下载 ...
- 取消一个本地svn目录与svn的联系
第一种方法: 直接.逐级地删除目标目录中的隐藏属性的.svn目录 这个方法试了,好牛蛋...,省事,快速... 第二种方法: 如果用的是TortoiseSVN客户端,则先在另外一处建立一个新目录A,右 ...
- 在本地环境(mac)启用https
前段时间客户一个涉及地理定位功能的页面突然出问题不能正常使用,在修复的过程中发现定位的方法 getCurrentPosition 只能在 https 协议下才能成功调用,这导致我在本地不能调试,每次修 ...
- 如何解决滚动条scrollbar出现造成的页面宽度被挤压的问题
参考如下: https://www.ucloud.cn/yun/114228.html
- KVM虚拟机的热迁移---Live Migration
KVM虚拟机的热迁移---Live Migration: 服务器虚拟化技术是当前的热点,而虚拟机的“热迁移(Live Migration)”技术则是虚拟机的运行状态完整保存下来,同时可以快速的回复到原 ...
- Linux进程批量管理工具
在使用docker容器时,可以有单机的docker-compose批量编排工具,甚至还有集群的k8s之类编排工具,那么在Linux系统中同样也有相关的批量管理进程的工具,其中使用最多的应该就是supe ...
- 《剑指offer》树专题 (牛客10.25)
考察的知识点主要在于树的数据结构(BST,AVL).遍历方式(前序,中序,后序,层次).遍历算法(DFS,BFS,回溯)以及遍历时借助的数据结构如队列和栈.由于树本身就是一个递归定义的结构,所以在递归 ...