`
JerryWang_SAP
  • 浏览: 1032749 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

如何用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的原创文章,请关注公众号"汪子熙"。

0
0
分享到:
评论

相关推荐

    JAVA传输到SAP,物料主数据代码,自己做项目写的

    JAVA 传输到 SAP,物料主数据代码,自己做项目写的,这个标题表明了本文的主要内容,即使用 JAVA 语言实现物料主数据代码的传输到 SAP 系统中。 描述解释 包含传输结构类型表类型直接传字段,这个描述表明了本文的...

    s4sdkexample:S4HANA SDK在SAP Marketing Cloud中的使用

    【S4HANA SDK在SAP Marketing Cloud中的使用】 SAP S/4HANA SDK(Software Development Kit)是SAP提供的一个工具集,允许开发者利用Java等编程语言与SAP S/4HANA系统进行集成和扩展。在这个特定的例子中,"s4...

    SAP ABAP与JAVA之间通过RFC传递数据实例

    本文档主要介绍了如何在SAP ABAP系统与JAVA应用程序之间通过RFC(Remote Function Call远程函数调用)实现数据交互的具体实现方法。核心需求是在给定特定的选择条件下,从SAP系统的数据库表T001中提取数据,并将这些...

    SAP_Cloud_Platform_zh中文介绍.pdf

    该平台提供了多种语言和框架的支持,例如 Java、Kotlin、Python、Node.js 等,并提供了丰富的开发工具和服务,例如 SAP Cloud SDK、SAP Cloud Platform SDK for iOS 和 Android 等。 账户管理是 SAP Cloud Platform...

    SAP HANA Cloud Platform

    在这个平台上,用户可以使用SAP HANA云数据库服务,并利用各种工具和服务,如HTML5开发工具包(SAPUI5)、Java运行时、开发人员和操作员指南等,来创建高效、实时的应用程序。以下是关于SAP HANA Cloud Platform的...

    JAVA 调用SAP SOAP webservice.docx

    在本文中,我们将详细介绍如何使用 JAVA 调用 SAP SOAP webservice,包括配置 SAP 登录信息、创建 java 项目、添加 web 服务客户端、生成 JAVA 类、调用接口等步骤。 配置 SAP 登录信息 在使用 JAVA 调用 SAP SOAP...

    SAP S/4 FICO银行主数据创建操作手册

    本操作手册详细介绍了如何在SAP环境中创建、修改、删除和冻结银行主数据,以及与之相关的开户行编码和开户行账户的管理。以下是各个操作步骤的详细说明: 1. **总览** - **总体描述**:银行主数据维护流程涉及企业...

    Java 调用 SAP RFC 案例

    要使用JCo,你需要先在SAP系统中配置RFC目的地,然后在Java代码中设置相应的连接参数。 以下是调用SAP RFC的基本步骤: 1. **配置SAP RFC目的地**:在SAP系统中,通过Transaction Code "SM59" 创建一个TCP/IP类型...

    使用 SAP Data Warehouse Cloud 进行数据获取、准备和建模.pdf

    使用 SAP Data Warehouse Cloud 进行数据获取、准备和建模 本文档主要讲解了如何使用 SAP Data Warehouse Cloud 进行数据获取、准备和建模。SAP Data Warehouse Cloud 是一个云端的数据仓库解决方案,旨在帮助用户...

    JAVA连接SAP的官方接口文档

    在IT行业中,尤其是在企业系统集成领域,JAVA连接SAP是一项常见的任务。SAP作为一个全球领先的业务软件解决方案提供商,其系统广泛应用于企业的财务管理、供应链管理、人力资源等核心业务流程。为了实现JAVA应用程序...

    17 SAP S4HANA Cloud Integration.pdf

    客户需要在SAP API Business Hub检查可用的API,然后在SAP Cloud Platform集成中创建映射,设置SAPS/4HANA Cloud的通信配置。客户拥有和管理这些映射。 在集成的责任归属方面,白皮书提出了关于数据所有权、系统...

    SAP创建供应商主数据.pdf

    本教程详细介绍了在SAP环境中如何创建和维护供应商主数据。 1. **用途** 创建供应商主数据的主要目的是为了在SAP系统内建立一个完整的供应商档案,以便进行订单处理、发票校验、付款等业务操作。供应商数据的准确...

    JAVA与SAP数据交互的方式总结

    在JAVA中,SAP提供了Java Connector (JCo)库,它为JAVA程序员提供了方便的API,用于创建、执行和管理RFC调用。例如,上述代码展示了如何使用JCo调用SAP自定义函数模块`ZPUR_DATA_GET_TMP1`来获取供应商的寄售和非...

    JAVA调用SAP ODATA服务

    在Java开发中,调用SAP ODATA服务是企业级集成和数据交换的常见场景。在实际操作中,可能会遇到一些挑战,如身份验证、请求方法的使用、跨域问题以及错误处理。以下是对这些知识点的详细说明: 1. **身份验证 (401 ...

    JAVA调用SAP ODATA服务.docx

    这段代码创建了一个CookieManager对象,并设置了Cookie策略只接受来自原始服务器的Cookie,从而避免了403错误。 #### XML解析与处理 在处理SAP ODATA服务返回的数据时,经常需要解析和处理XML格式的数据。可以使用...

    SAP Cloud Platform Connectivity

    在Cloud Foundry环境中,Connectivity服务允许开发者创建应用程序,这些应用程序可以透明地连接到各种远程服务,同时保持数据的安全传输。初始设置包括配置服务实例、认证和连接定义。开发应用时,可以利用SAP提供...

    SAP java 连接库

    在描述中提到的 "java to sap of linux" 指的是该连接库在 Linux 操作系统上的应用,意味着我们可以用 Java 在 Linux 平台上与 SAP 系统进行集成。 标签"jco sap"进一步明确了讨论的主题。JCO(Java Connector)是 ...

    java连接sap 环境配置文件

    - `sapjco3.jar`: 这是Java连接器的主要库文件,包含所有必要的Java类和接口,使得开发者可以在Java代码中使用SAP JCo API。需要将这个jar文件添加到Java项目的类路径中,通常是项目的`lib`目录,这样在编译和运行...

Global site tag (gtag.js) - Google Analytics