我们可以使用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,物料主数据代码,自己做项目写的,这个标题表明了本文的主要内容,即使用 JAVA 语言实现物料主数据代码的传输到 SAP 系统中。 描述解释 包含传输结构类型表类型直接传字段,这个描述表明了本文的...
【S4HANA SDK在SAP Marketing Cloud中的使用】 SAP S/4HANA SDK(Software Development Kit)是SAP提供的一个工具集,允许开发者利用Java等编程语言与SAP S/4HANA系统进行集成和扩展。在这个特定的例子中,"s4...
本文档主要介绍了如何在SAP ABAP系统与JAVA应用程序之间通过RFC(Remote Function Call远程函数调用)实现数据交互的具体实现方法。核心需求是在给定特定的选择条件下,从SAP系统的数据库表T001中提取数据,并将这些...
该平台提供了多种语言和框架的支持,例如 Java、Kotlin、Python、Node.js 等,并提供了丰富的开发工具和服务,例如 SAP Cloud SDK、SAP Cloud Platform SDK for iOS 和 Android 等。 账户管理是 SAP Cloud Platform...
在这个平台上,用户可以使用SAP HANA云数据库服务,并利用各种工具和服务,如HTML5开发工具包(SAPUI5)、Java运行时、开发人员和操作员指南等,来创建高效、实时的应用程序。以下是关于SAP HANA Cloud Platform的...
在本文中,我们将详细介绍如何使用 JAVA 调用 SAP SOAP webservice,包括配置 SAP 登录信息、创建 java 项目、添加 web 服务客户端、生成 JAVA 类、调用接口等步骤。 配置 SAP 登录信息 在使用 JAVA 调用 SAP SOAP...
本操作手册详细介绍了如何在SAP环境中创建、修改、删除和冻结银行主数据,以及与之相关的开户行编码和开户行账户的管理。以下是各个操作步骤的详细说明: 1. **总览** - **总体描述**:银行主数据维护流程涉及企业...
要使用JCo,你需要先在SAP系统中配置RFC目的地,然后在Java代码中设置相应的连接参数。 以下是调用SAP RFC的基本步骤: 1. **配置SAP RFC目的地**:在SAP系统中,通过Transaction Code "SM59" 创建一个TCP/IP类型...
使用 SAP Data Warehouse Cloud 进行数据获取、准备和建模 本文档主要讲解了如何使用 SAP Data Warehouse Cloud 进行数据获取、准备和建模。SAP Data Warehouse Cloud 是一个云端的数据仓库解决方案,旨在帮助用户...
在IT行业中,尤其是在企业系统集成领域,JAVA连接SAP是一项常见的任务。SAP作为一个全球领先的业务软件解决方案提供商,其系统广泛应用于企业的财务管理、供应链管理、人力资源等核心业务流程。为了实现JAVA应用程序...
客户需要在SAP API Business Hub检查可用的API,然后在SAP Cloud Platform集成中创建映射,设置SAPS/4HANA Cloud的通信配置。客户拥有和管理这些映射。 在集成的责任归属方面,白皮书提出了关于数据所有权、系统...
本教程详细介绍了在SAP环境中如何创建和维护供应商主数据。 1. **用途** 创建供应商主数据的主要目的是为了在SAP系统内建立一个完整的供应商档案,以便进行订单处理、发票校验、付款等业务操作。供应商数据的准确...
在JAVA中,SAP提供了Java Connector (JCo)库,它为JAVA程序员提供了方便的API,用于创建、执行和管理RFC调用。例如,上述代码展示了如何使用JCo调用SAP自定义函数模块`ZPUR_DATA_GET_TMP1`来获取供应商的寄售和非...
在Java开发中,调用SAP ODATA服务是企业级集成和数据交换的常见场景。在实际操作中,可能会遇到一些挑战,如身份验证、请求方法的使用、跨域问题以及错误处理。以下是对这些知识点的详细说明: 1. **身份验证 (401 ...
这段代码创建了一个CookieManager对象,并设置了Cookie策略只接受来自原始服务器的Cookie,从而避免了403错误。 #### XML解析与处理 在处理SAP ODATA服务返回的数据时,经常需要解析和处理XML格式的数据。可以使用...
在Cloud Foundry环境中,Connectivity服务允许开发者创建应用程序,这些应用程序可以透明地连接到各种远程服务,同时保持数据的安全传输。初始设置包括配置服务实例、认证和连接定义。开发应用时,可以利用SAP提供...
在描述中提到的 "java to sap of linux" 指的是该连接库在 Linux 操作系统上的应用,意味着我们可以用 Java 在 Linux 平台上与 SAP 系统进行集成。 标签"jco sap"进一步明确了讨论的主题。JCO(Java Connector)是 ...
- `sapjco3.jar`: 这是Java连接器的主要库文件,包含所有必要的Java类和接口,使得开发者可以在Java代码中使用SAP JCo API。需要将这个jar文件添加到Java项目的类路径中,通常是项目的`lib`目录,这样在编译和运行...