资讯专栏INFORMATION COLUMN

如何用Java代码在SAP Marketing Cloud里创建contact数据

princekin / 3759人阅读

摘要:我们可以使用提供的在第三方应用里创建主数据地址示例代码只有多行上述代码里我硬编码了一个的姓为名为执行之后打印出消费成功的代码硬编码的数据能够在里观察到上述源代码在我的上也能看到要获取更多的原创文章,请关注公众号汪子熙

我们可以使用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/Ja...

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74651.html

相关文章

  • 使用jMeter对基于SAP ID service进行Authentication的Restful

    摘要:因为这个项目最后会在年月日于上海举行的云大会上展示,所以当时完成集成工作后心想,还是得提前测试一下咱们的在响应并发请求时的性能做到心里有数。 这篇文章本来Jerry只在SAP社区上写了英文版的,可以通过点击文末的阅读原文获得。后来有两位做Marketing Cloud开发的德国同事,写邮件询问关于文章的更多细节,声称这种方式对他们自己的API性能测试很有用,所以我觉得还是值得用中文再写...

    longmon 评论0 收藏0
  • 容器,Docker, Kubernetes和Kyma,以及Kyma对SAP的意义

    摘要:该标准主要分为运行时标准和容器镜像标准。事件注册好之后,使用微服务架构实现事件的监听者消费者。 大家好,今天非常高兴能给大家做一个关于Kyma的技术分享。这个session的audience主要是针对使用咱们成都研究院使用Java和nodejs等技术栈做微服务开发的同事们。对于在ABAP netweaver上做SAP传统开发的同事们来说,这个session可以让大家开阔一下眼界。 这是...

    xiaokai 评论0 收藏0
  • 容器,Docker, Kubernetes和Kyma,以及Kyma对SAP的意义

    摘要:该标准主要分为运行时标准和容器镜像标准。事件注册好之后,使用微服务架构实现事件的监听者消费者。 大家好,今天非常高兴能给大家做一个关于Kyma的技术分享。这个session的audience主要是针对使用咱们成都研究院使用Java和nodejs等技术栈做微服务开发的同事们。对于在ABAP netweaver上做SAP传统开发的同事们来说,这个session可以让大家开阔一下眼界。 这是...

    jk_v1 评论0 收藏0
  • 容器,Docker, Kubernetes和Kyma,以及Kyma对SAP的意义

    摘要:该标准主要分为运行时标准和容器镜像标准。事件注册好之后,使用微服务架构实现事件的监听者消费者。 大家好,今天非常高兴能给大家做一个关于Kyma的技术分享。这个session的audience主要是针对使用咱们成都研究院使用Java和nodejs等技术栈做微服务开发的同事们。对于在ABAP netweaver上做SAP传统开发的同事们来说,这个session可以让大家开阔一下眼界。 这是...

    wangym 评论0 收藏0
  • 基于SAP Kyma的订单编排增强介绍

    摘要:当然,不同的产品,对订单增强的实现方式也各不相同。在世界里,想对订单处理流程做增强,同之前介绍的相比,相对来说受的限制要多一些。首单检查返回的分数是,根据当前配置文件这个结果被认定为首单。 尽管有一万个舍不得,2018年还是无可挽回地离我们远去了。 唯有SAP成都研究院的同事和我去年在网络上留下的这些痕迹,能证明2018年我们曾经很认真地去度过每一天: SAP成都研究院2018年总共...

    CoorChice 评论0 收藏0

发表评论

0条评论

princekin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<