在本文中,将探讨如何使用BizTalk Orchestration调用一个简单的Bing地理编码服务,通过REST API实现。BizTalk 2013引入了一个新的REST适配器WCF-WebHttp,以及一个名为“变量映射”的新概念。
如果想要更深入地了解REST,并在阅读本文之前了解更多信息,可以参考以下文章:
请参考以下URL申请Bing Maps API应用密钥:
以下是通过BizTalk调用Bing地理编码REST API的步骤。
确定Bing地理编码URL,并生成XML文档。
http://dev.virtualearth.net/REST/v1/Locations?query=One%20Dell%20Way,%20Round%20Rock,%20TX%2078682&key=Ag_GDRUeN3ghulGjTGIAW1ziMR8j-aQ5cu8SbKI0x4wsL8WykRPdSV4lOb9XeptU&o=xml
注意URL中使用的各种参数。
参数名称 | 说明 |
---|---|
Query | 地理编码位置的地址 |
Key | Bing MAPS应用ID |
O | 输出XML或JSON值 |
通过在浏览器中放置URL生成XML文档。右键单击浏览器,选择“查看源代码”,然后将其保存为本地文件BingRESTResponse.xml。
从上一步保存的XML文件生成一个模式(BingRESTResponse.xsd)。这个模式将被导入到BizTalk解决方案中。
打开BizTalk管理控制台以创建一个新的发送端口。选择默认的“BizTalk Application 1”或选择的任何其他BizTalk应用程序。
观察发送端口的设置:'SP_BingMaps:REST'。注意,当将绑定文件导入BizTalk应用程序时,发送端口会自动创建。
使用下载链接下载Visual Studio 2012 BizTalk项目,并查看BindingFiles文件夹中的BizTalk绑定文件。
接收管道设置为XMLReceive,因为响应的模式已经在步骤1中生成。
按照屏幕截图中显示的所有详细信息进行填写。
点击“配置”按钮。参见下面的屏幕截图。
注意每个HTTP URL映射的属性Name、Method和Url。
<BtsHttpUrlMapping>
<Operation Name="GetGeoCode" Method="GET" Url="?query={userAddressQuery}&key={BingMapsKey}&o=xml"/>
</BtsHttpUrlMapping>
将参数与BizTalk Orchestration中的实际值映射的技术称为变量映射。变量映射是使用括号{parameter}完成的。
点击“编辑…”按钮。注意必须为变量映射创建一个BizTalk属性模式。注意,可以在设置变量映射对话框中的值之后创建模式。点击“确定”,然后选择“消息”选项卡。
下面的屏幕截图代表了变量映射对话框中指定的属性模式。
在出站消息选项卡上指定GET,然后点击“确定”。
多次点击“确定”,关闭所有对话框框以创建一个新的Bing地理编码发送端口。
注意,当将绑定文件导入BizTalk应用程序时,发送端口会自动创建。
打开BizTalk解决方案'DSHS.GeoCoding.sln',并注意以下几点。
在编排中的第3个形状用于向Bing地理编码服务发送GET请求。
第3个形状上的消息元素由于属性提升(BingMapsRestParams.xsd)被映射为BizTalk消息上下文变量。
输入消息中的元素如下表所示映射。
请求消息变量 | 消息上下文变量 |
---|---|
ApplicationID | BingMapsAPIKey |
QueryAddress | UserAddressQuery |
第4个形状是一个接收形状,Bing Maps服务调用的响应将返回。这被映射到在步骤1中创建的模式(BingRESTResponse.xsd)上。
解决方案中的BizTalk映射将Bing Maps API响应转换为消费者所需的适当XML格式。这是一个非常简单的过程。
创建BizTalk Drop位置:
打开位于'SampleFiles'目录中的示例文件DSHS_GeoCodingRequest_sample_1.xml。注意ApplicationID必须正确生成,参考步骤0以正确获取密钥。
更改Query Address XML标签并保存文件。
将绑定文件(DSHS.GeoCoding.Bindings.xml)导入BizTalk并正确部署解决方案。启动BizTalk应用程序。
将文件复制并粘贴到BizTalk输入文件夹'C:\BizTalkDropLocations\DSHS.GeoCode\In'。
在BizTalk输出文件夹'C:\BizTalkDropLocations\DSHS.GeoCode\Out'中观察GeoCode值。