学习目标
完成本单元后,您将能够:
- 为您的组织生成一个WSDL文件。
- 使用SoapUI从WSDL文件创建一个SOAP项目。
- 使用SOAP API登录您的DE组织。
- 使用SOAP API创建一个帐户。
企业和合作伙伴WSDL
如果您已经航行了另一个基于SOAP的API的海峡,您知道Web服务描述语言(WSDL)文件基本上是您了解如何使用API的地图。它包含进行API调用的绑定,协议和对象。
Salesforce为两种不同的使用情况提供了两个SOAP API WSDL。企业WSDL针对单个Salesforce组织进行了优化。它是强类型的,它反映了你的组织特定的配置,这意味着从两个不同的组织生成的两个企业WSDL文件包含不同的信息。
合作伙伴WSDL针对许多Salesforce组织进行了优化。它是松散的类型,它不会根据组织的特定配置进行更改。
通常,如果您要为单个Salesforce组织编写集成,请使用企业WSDL。对于多个组织,请使用合作伙伴WSDL。
对于这个单元,我们使用企业WSDL来研究SOAP API。第一步是为您的组织生成一个WSDL文件。在您的组织架构中,从快速查找框中输入API,然后选择API。在API WSDL页面上,单击 Generate Enterprise WSDL.
在“生成企业WSDL”页面上,单击“Generate”。生成WSDL时,右键单击页面并将WSDL文件保存在计算机上的某个位置。我们很快就会使用它。
这里有一个关于使用企业WSDL的技巧。企业WSDL反映了您的组织的特定配置,因此无论您何时对您的组织进行元数据更改,都需要重新生成WSDL文件。这样,WSDL文件就不会与您的组织配置不同步。
使用SoapUI创建一个SOAP项目
现在我们有了我们的WSDL文件,我们需要一种方法来提取信息来开始制作SOAP API请求。用网络来说,这个过程被称为使用WSDL。就像一个kraken消耗一艘满载不幸船员的船,Force.com Web服务连接器(WSC)等工具使用WSDL文件。然后这些工具创建类,使您能够使用通用编程语言使用SOAP API发出请求。
对于这个单元,我们使用称为SoapUI的第三方工具来使用我们的企业WSDL文件。 SoapUI是一个免费的开源应用程序,用于测试Web服务。要开始,请从SoapUI网站下载并安装SoapUI OpenSource。只安装SoapUI组件。
SoapUI安装并启动后,从File菜单中选择New SOAP Project。对于项目名称,输入Exploring Salesforce SOAP API。对于初始的WSDL,浏览到您保存企业WSDL文件的位置并选择它。不要更改任何其他选项。你的SoapUI窗口看起来像这样。
点击OK。处理几秒钟后,在屏幕左侧的导航器窗格中将出现Exploring Salesforce SOAP API文件夹。它下面是一个名为SoapBinding的条目,其中包含几个操作。
那么我们在这里看什么?每个操作都对应于我们可以创建的SOAP API请求。每个操作的属性都是从WSDL文件中的信息中提取的。每个操作还包含一个示例XML请求,其中包含操作的HTTPS端点和预填充的SOAP消息。
还有一点,Salesforce需要所有连接才能使用TLS 1.1或更高版本。如果您在Java 7中使用SoapUI,则默认情况下不启用TLS 1.1。如果您尝试使用旧版本的TLS连接到Salesforce,则会收到错误消息。好消息是,这是一个非常简单的修复。看看这个方便的博客文章了解更多信息。
现在我们都准备发出SOAP API请求。完全航行,cap’n!
登录您的DE组织
在SoapUI中,向下滚动到login 操作。展开它,然后双击请求1.将出现一个示例SOAP登录请求。
这是对端点URI(1)的快速分解。
- https://—指定安全的HTTP。
- login.salesforce.com—登录请求的顶级域名。
- /services/Soap—指定我们正在发出SOAP API请求。
- /c—指定我们正在使用企业WSDL。使用/ u作为伙伴WSDL。
- /36.0—API版本号。 v前缀缺失,因为某些API在版本号之前包含它,有些则不包含。这种行为只是Salesforce API的一个怪癖。
- /0DF36000000LHZw—软件包版本号。
我们在这个例子中没有使用托管包,所以我们可以从URI的末尾删除包版本号。现在就去做吧。
SOAP消息(2)包含了我们希望在SOAP消息中找到的所有内容:信封,标题和正文。
LoginScopeHeader元素中的属性涉及自助服务和客户门户用户的身份验证。由于我们不必担心这些值,因此请删除整个<urn:LoginScopeHeader>元素(从<urn:LoginScopeHeader>到</ urn:LoginScopeHeader>中的所有内容)。突出显示窗口中的文本,然后按Delete键。
接下来,看一下消息正文中的<urn:login>元素。这个元素是登录请求的大部分。这是我们提供用户凭据的地方。用你的用户名和密码替换你的DE组织。 Trailhead游乐场组织将需要重置密码。
由于您从Salesforce发出的未知IP地址发出API请求,因此您需要将安全令牌附加到密码末尾。例如,如果您的密码是mypassword并且您的安全令牌是XXXXXXXXXX,请在<urn:password>元素内输入mypasswordXXXXXXXXXX。在注册您的DE组织后,您首次重置密码时,您的安全令牌已通过电子邮件发送给您。如果您之后重置密码,则会通过电子邮件将新安全令牌发送给您。如果找不到,可以在Salesforce中重置。
- 从您的个人设置中,在快速查找框中输入重置,然后选择 Reset My Security Token.
- 单击 Reset Security Token. 新的安全令牌发送到您的Salesforce个人设置中的电子邮件地址。
你的SOAP消息看起来像这样。
点击请求窗口左上方的播放按钮(绿色三角形)。这个按钮发送请求,把你的SOAP消息放在一个瓶子里。下面是我们扩展响应时的样子。
恭喜,船长。您已成功登录。响应中包含有关您的组织和用户的大量信息。最重要的是,它包含您组织的实例(或自定义域,如果您使用的是我的域)以及将用于提出未来请求的会话ID。
将实例和会话ID复制到文本文件中。我们在一分钟内使用它们。
由于您的组织实例可能发生更改,因此在开始构建集成时,请不要对引用进行硬编码!而是使用Salesforce功能我的域配置一个自定义域。自定义域不仅可以消除更改实例名称的麻烦,还可以使用它来突出显示品牌,使组织更安全,并使您的登录页面个性化。
创建一个帐户
就像我们使用REST API所做的那样,让我们使用SOAP API创建一个帐户。在屏幕左侧的导航窗格中,找到create操作。展开它,然后双击 Request 1.因为创建记录比登录更复杂,所以create()SOAP消息包含更多的元素。大部分元素都包含在请求标题中,其中大部分是可选的。为了简化,我们将删除大部分标题信息,但请记住,在创建记录时,这些标题提供的选项是可用的。有关每个头文件的信息,请查阅SOAP API开发人员指南中的SOAP Headers主题。
但是,我们不想删除的一个头是SessionHeader。它将包含我们从login()响应中获得的会话ID。继续并删除其他标题,从<urn:EmailHeader>到<urn:AssignmentRuleHeader>。你的消息看起来像这样。
获取复制到文本文件的会话ID并将其粘贴到<urn:sessionId>标记中,替换?
我们对邮件正文做了一些更多的调整。首先,我们指定我们正在创建一个帐户。将<urn:sObjects>标记中的文本更改为如下所示:<urn:sObjects xsi:type =“urn1:Account”xmlns:xsi =“http://www.w3.org/2001/XMLSchema-instance” >。此调整使用XML实例架构声明指定正确的记录类型。
我们也想给这个帐户一个名字。在sObjects元素中添加<Name>示例SOAP Account </ Name>。也删除fieldsToNull和Id元素。现在你的消息看起来像这样。
在我们提出请求之前最后要做的事情。更改端点以指定您的组织的实例而不是登录,并从URI的末尾删除软件包版本。端点URI如下所示:https://na30.salesforce.com/services/Soap/c/36.0.
我们准备发送请求。再次点击绿色的三角形。有效!我们来看看回应。
注意LimitInfoHeader。 此标题返回有关您的API使用情况的信息。 在上面的例子中,我们今天在15,000个允许的呼叫中取得了9个。
在响应正文中,注意<result>元素。 <success> true </ success>表示记录已成功创建。 <id>包含记录的ID,您可以在以后的请求中使用该记录。
我们介绍了使用SOAP API进行请求的基础知识。 当然,每个操作都有自己的参数和特点。 确保在开始使用SOAP API编写集成时,将SOAP API开发人员指南用作映射。