美文网首页SAP札记SAP 修行SAP
使用nodejs实现OData的batch操作在Marketin

使用nodejs实现OData的batch操作在Marketin

作者: _扫地僧_ | 来源:发表于2019-05-22 11:57 被阅读0次

    我们先来看看Marketing Cloud系统里的contact信息:
    一共1218374条数据。

    clipboard1

    我们用如下的nodejs代码通过OData来获取这些数据:

    var request = require('request');
    var config = require("./mcConfig");
    
    var url = config.getContactBatchURL;
    
    var sBody = "--batch_c914-a60c-1877" + "\n" + 
    "Content-Type: application/http" + "\n" + 
    "Content-Transfer-Encoding: binary" + "\n" + 
    "\n" + 
    "GET InteractionContacts?sap-client=100&$skip=0&$top=2&$select=ImageURL%2cName%2cContactLevelName%2cCountryName%2cCity%2cEMailAddress%2cPhoneNumber%2cMobilePhoneNumber%2cCorporateAccountName%2cInteractionContactUUID%2cRelationship%2cType&$inlinecount=allpages HTTP/1.1" + 
    "sap-cancel-on-close: true" + "\n" + 
    "Cache-Control: max-age=360" + "\n" + 
    "sap-contextid-accept: header" + "\n" + 
    "Accept: application/json" + "\n" + 
    "Accept-Language: en" + "\n" + 
    "DataServiceVersion: 2.0" + "\n" + 
    "MaxDataServiceVersion: 2.0" + "\n" + 
    "\n" + "\n" + 
    "--batch_c914-a60c-1877--";
    
    var getContactOptions = {
            url: url,
            method: "POST",
            json:false,
            headers: {
                "content-type": "multipart/mixed;boundary=batch_c914-a60c-1877",
                'Authorization': 'Basic ' + new Buffer(config.user + ":" + config.password).toString('base64')
            },
            body: sBody
    };
    
    function getContact() {
      return new Promise(function(resolve,reject){
          var requestC = request.defaults({jar: true});
          console.log("Step1: get contact via url: " + url );
    
          requestC(getContactOptions,function(error,response,body){
            if( error){
              console.log("error occurred: " + error);
              reject(error);
            }
            console.log("response:" + body);
            var nStartIndex = body.indexOf("{");
            var nLastIndex = body.lastIndexOf("}");
            if( nStartIndex < 0 || nLastIndex < 0)
                return;
            var sPayload = body.substring(nStartIndex, ++nLastIndex);
            resolve(JSON.parse(sPayload));
          }); 
         });
    }
    
    function displayResult(oResult){
      console.log(oResult);
    }
    
    getContact().then(displayResult);
    

    使用node命令直接执行这个.js文件:

    clipboard2

    得到结果:

    clipboard3

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


    相关文章

      网友评论

        本文标题:使用nodejs实现OData的batch操作在Marketin

        本文链接:https://www.haomeiwen.com/subject/brmyzqtx.html