Marketing Cloud Soap API使用教程

Jeffong
• 阅读 1826

::: warning 这个教程是Salesforce的Marketing Cloud :::

首先先下载一个SoapUI的工具,它是一个Soap测试工具,类似于PostMan,是专门测试Soap接口的工具。 Marketing Cloud Soap API使用教程

然后使用该工具,向Marketing Cloud发送Xml(Soap的报文都是xml格式的)

Marketing Cloud Soap API使用教程

在SoapUI创建项目,点击File-New SOAP Project 即可创建一个SOAP项目。

Marketing Cloud Soap API使用教程

其中WSDL可以在下面链接的文章中找: 点这里点这里

等待一会儿,就可以看见树图了。

Marketing Cloud Soap API使用教程

其中Retrieve用作查询,其他的是否有效有待验证。

然后就可以发送报文了,但报文中需要添加你的身份信息,即token。如何获得token呢?

下面是获取token的方法:

首先得在Marketing Cloud中配置读写权限,比如读取Automation,读取DE等,在 头像-setup-Apps-Installed Packages中就能创建一个Package,用来配置权限和调用API。

Marketing Cloud Soap API使用教程

Client Id 和 Client Secret 就是调用API的用户名和密码,在package中提供了Authentication Base URI,REST Base URI和SOAP Base URI。

使用Authentication Base URI可以获取token信息,使用PostMan,向http://Authentication Base URI/v2/token 发送Post请求,就会获得供Soap API使用的token信息,要发送的要素有:

grant_type,client_id,client_secret,account_id,scope

其中参数说明:点这里点这里 Marketing Cloud Soap API使用教程

grant_type要素值设为client_credentials即可,client_id,client_secret就是package中的Client Id 和 Client Secret,account_id是环境号,即头像旁边选环境的MID,scope为权限信息,比如你想读automation,就设置成 automations_read,多权限用空格分隔。

获取的报文:

  {

"access_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",

"token_type": "Bearer",

"expires_in": 1080,

"scope": "data_extensions_read data_extensions_write automations_read",

"soap_instance_url": "https://xxxxxxxxxxxxx.soap.marketingcloudapis.com/",

"rest_instance_url": "https://xxxxxxxxxxxxx.rest.marketingcloudapis.com/"

}

把accenss_token复制出来,粘贴到要发送的Soap报文中,就可以通过身份验证。

下面是Soap API要发送的查询报文示例

查询时要发送的XML:

<soapenv:envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">

   <soapenv:header>

       <fueloauth>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx这里放刚才获得的token</fueloauth>

   </soapenv:header>

   <soapenv:body>

      <retrieverequestmsg xmlns=""http://exacttarget.com/wsdl/partnerAPI"">

         <retrieverequest>

            <objecttype>SubscriberList</objecttype>

            <properties>ID</properties>

            <properties>PartnerKey</properties>

            <properties>CreatedDate</properties>

            <properties>Client.ID</properties>

            <properties>Status</properties>

            <properties>List.ID</properties>

            <properties>List.ListName</properties>

            <properties>Subscriber.Status</properties>

            <properties>Subscriber.CreatedDate</properties>

            <properties>Subscriber.ID</properties>

            <properties>Subscriber.EmailAddress</properties>

            <properties>Subscriber.SubscriberKey</properties>

            <filter xsi:type=""par:ComplexFilterPart"" xmlns:par=""http://exacttarget.com/wsdl/partnerAPI"">

               <leftoperand xsi:type=""par:SimpleFilterPart"">

                  <property>List.ID</property>

                  <simpleoperator>equals</simpleoperator>

                  <value>xxxxxx</value>

               </leftoperand>

               <logicaloperator>AND</logicaloperator>

               <rightoperand xsi:type=""par:SimpleFilterPart"">

                  <property>CreatedDate</property>

                  <simpleoperator>between</simpleoperator>

                  <datevalue>2013-03-01T08:42:00</datevalue>

                  <datevalue>2013-03-18T08:42:00</datevalue>

               </rightoperand>

            </filter>

            <queryallaccounts>false</queryallaccounts>

         </retrieverequest>

      </retrieverequestmsg>

   </soapenv:body>

</soapenv:envelope>

这是subscriberList对象所包含的元素: 点这里点这里

可以看到,Subscriber 是一个Subscriber对象,如何查出该对象中的元素呢?那就需要这么写:Subscriber.ID 代表Subscriber对象的ID值。

有时候可以看到对象中含有数组元素,那么这种得怎么写properties呢?没法写。。。但这种包含数组的,基本都是一个对象数组,可以通过该种对象进行查询,比如:

查询DataExtension时,Fields就是一个DataExtensionField[]对象数组,这时,就可以通过DataExtensionField对象,查询该DE的所有DataExtensionField信息。即修改报文为DataExtensionField,来查询DE的所有字段。该对象中会包含关于DE的要素,可以与DE关联。

如果想开发一些方便的工具,Marketing Cloud还提供了SDK,并且是开源的。 这是SDK 的地址:点这里点这里

有C# SDK、Java SDK、Node SDK、PHP SDK、Ruby SDK、Python SDK

有趣的是,Java的SDK里有的方法还是带有中文备注的。

这个SDK还是不完善的,有的对象查询需要自己创建。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Java爬虫之JSoup使用教程
title:Java爬虫之JSoup使用教程date:201812248:00:000800update:201812248:00:000800author:mecover:https://imgblog.csdnimg.cn/20181224144920712(https://www.oschin
Stella981 Stella981
3年前
Python 接口自动化测试
1\.接口基础知识1.1接口分类接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。(1)webservice接口:走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都要通过工具才能进行调用,测试。(2)httpapi接口:走http协议,通过路径来区分
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这