zoukankan      html  css  js  c++  java
  • 使用nodejs对Marketing Cloud的contact主数据进行修改操作

    假设在Marketing Cloud有这样一个contact主数据:

    现在需求是使用编程语言比如nodejs修改这个contact实例的高亮属性。

    代码如下:

    
    var config = require("./mcConfig");
    var request = require('request');
    
    var url = config.tokenURL;
    
    console.log("user: " + config.user + " password: " + config.password); 
    var getTokenOptions = {
            url: url,
            method: "GET",
            json:true,     
            headers: {
                'Authorization': 'Basic ' + new Buffer(config.user + ":" + config.password).toString('base64'),
                "content-type": "application/json",
                "x-csrf-token" :"fetch"
            }
    };
    
    function getToken() {
      return new Promise(function(resolve,reject){
          var requestC = request.defaults({jar: true});
          console.log("Step1: get csrf token via url: " + url );
    
          requestC(getTokenOptions,function(error,response,body){
           var csrfToken = response.headers['x-csrf-token'];
           if(!csrfToken){
              reject({message:"token fetch error: " + error});
              return;
           }
           console.log("Step1: csrf token got: " + csrfToken);
           resolve(csrfToken);
          }); 
         });
    }
    
    function updateContact(token){
    	return new Promise(function(resolve, reject){
    		var sPostData = "--batch_1f7d-bd35-caed" + "
    " + 
      "Content-Type: multipart/mixed; boundary=changeset_8f9e-9a44-9f9e" + "
    " + 
      "
    " + 
      "--changeset_8f9e-9a44-9f9e" + "
    " + 
      "Content-Type: application/http" + "
    " + 
      "Content-Transfer-Encoding: binary" + "
    " + 
      "
    " + 
      "MERGE Consumers('02000A21209F1EE99CDF1A1FC9AA8065')?sap-client=100 HTTP/1.1" + "
    " + 
      "Cache-Control: max-age=360" + "
    " + 
      "sap-contextid-accept: header" + "
    " + 
      "Accept: application/json" + "
    " + 
      "Accept-Language: en" + "
    " + 
      "DataServiceVersion: 2.0" + "
    " + 
      "MaxDataServiceVersion: 2.0" + "
    " + 
      "x-csrf-token: fQ2Pwfmf0K_LVYoKV9QYUw==" + "
    " + 
      "Content-Type: application/json" + "
    " + 
      //"Content-Length: 215" + "
    " + 
      "
    " + 
      "{"YY1_CustomerType_ENH":"Jerry测试1"}" + "
    " + 
      "--changeset_8f9e-9a44-9f9e--" + "
    " + 
      "
    " + 
      "--batch_1f7d-bd35-caed--";
    
    		var requestC = request.defaults({jar: true});
        var createOptions = {
                  url: config.updateContactURL,
                  method: "POST",
                  json:false,
                  headers: {
                      "content-type": "multipart/mixed;boundary=batch_1f7d-bd35-caed",
                      'x-csrf-token': token
                  },
                  body:sPostData
            };
            requestC(createOptions,function(error,response,data){
                if(error){
                    reject(error.message);
                }else {
                   debugger;
                   console.log("Contact updated successfully");
                   resolve(data);
                }
            });
    	});
    }
    
    getToken().then(updateContact).catch((error) =>{
      console.log("error: " + error.message);
    });
    

    我在nodejs代码里把需要更改的字段值赋为"Jerry测试1”:

    执行之后这个属性被成功更新了:

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

  • 相关阅读:
    Windows下MemCache多端口安装配置
    PL/SQL Developer 9.x 注册码
    SQL Server 表变量和临时表的区别
    SQL 存储过程入门(事务)
    把存储过程结果集SELECT INTO到临时表
    在T-SQL语句中访问远程数据库(openrowset/opendatasource/openquery)
    解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的方法
    C#性能优化实践
    sql server 存储过程中使用变量表,临时表的分析(续)
    Request.Url.Port 获取不到正确的端口号
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/10923223.html
Copyright © 2011-2022 走看看