Web Service 简介
Web Service 是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的 web 应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过 web 调用。Web Service 是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问 Web Service,通过 Web Service 内部执行得到所需结果.Web Service 可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他 Web Service 应用程序可以发现并调用它部署的服务。
技术和规则
在构建和使用 Web Service 时,主要用到以下几个关键的技术和规则:
- 1.XML:描述数据的标准方法.
- 2.SOAP:表示信息交换的协议.
- 3.WSDL:Web 服务描述语言.
- 4.UDDI(Universal Description, Discovery and Integration):通用描述、发现与集成,它是一种独立于平台的,基于 XML 语言的用于在互联网上描述商务的协议。
实际上,WebService 的主要目标是跨平台的可互操作性。为了达到这一目标,WebService 完全基于 XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。由此可以看出,在以下三种情况下,使用 WebService 会带来极大的好处。
示例说明
本示例将调用美国一个查询城市编码的 Webservice 接口,将查询到的信息保存到我们自己数据库的表中。
http://www.webservicex.net/uszip.asmx 是一个查询美国城市编码信息的 Webservice 接口,例如我们点击 GetInfoByCity 方法,输入 New York,调用后返回 XML 格式的文件。
实现步骤
添加 HTTP 链接管理器
新建 SSIS 项目后,在连接管理器中右键选择【新建连接】,弹出的管理器类型面板中选择 HTTP,点击添加后出现 HTTP 连接管理器面板,服务器 URL 填:http://www.webservicex.net/uszip.asmx?WSDL,注意,末尾要加上 ?WSDL 参数。单击【测试按钮】,测试连接成功后单击【确定】关闭对话框。
设置 Web 服务任务控件
拖入 Web 服务任务控件,双击后打开 Web 服务任务编辑器,常规面板中,连接选择我们刚刚建的 HTTP 连接,WSDLFile 需要我们自己建一个,OverwriteWSDLFile 选项为 true.之后单击【下载 WSDL】按钮,如果不单击这个,后面就会报错的。
切换到输入面板,在 Service 选择 USZip,Method 中有四个方法可以选,这里用 GetInfoByCity,如果上面一步没有点击下载 WSDL 按钮的话,这里就选不了,要报错的。选完后下面那栏说明出现中文乱码,不用管它。参数赋值里面我就直接给了一个 New York,当然也可以勾上变量复选框,用自己定义的包变量。
切换到输出面板,输出类型可以选择文件或者是变量,这里我选了文件,把返回的 XML 保存在新建的 XML 文件里。
执行下 Web 服务任务,返回的 XML 格式数据就保存在里文件里。这里要执行一下任务,让 XML 文件里有数据,为后面步骤做准备。
数据流任务部分
控制流中拖入数据流任务,在数据流任务中拖入 XML 源控件,双击打开 XML 源编辑器,XML 位置选择上面步骤创建的 XML 文件,然后点击【生成 XSD】,输入一个 XSD 文件名,这个文件是用来生成对 XML 结构说明的。
切换到列面板,如果出现提示,单击【确定】。这里就会出现对 XSD 文件解析出要生成的列了。
数据流中拖入 OLEDB 目标控件,选择新建一个表。切换到列映射,可以编辑对应的输入输出列,这里默认就可以了。
至此,所有任务就建好了,执行一下包,看看数据库中的表是否有数据了。
总结
- 1.HTTP 连接部分的 URL 要带上?WSDL 参数。
- 2.Web 服务编辑器常规面板配置好 WSDL 文件后要先下载 WSDL。
- 3.Web 服务编辑器输出面板中,也可以把返回的 XML 数据保存在一个变量里,在后面的 XML 源中调用,但是我试了不成功,还不清楚问题出在哪。
- 4.XML 源编辑器里,要生成 XSD 文件,这个貌似对于比较标准的 XML 文件可以生成,我后来试了个其它 Webservice 的接口调用返回 XML 文件,里面有两个命名空间,然后生成 XSD 就报错了。
- 5.最后一点也是耗费我最多时间的问题,我后来想调用国家天气查询的 Webservice 接口,但是返回的 XML 文件是带有数组类型的,像下图那样,这样的话用本文的做法生成 XSD 那里可以生成,但是只会出现 string 一列,写入数据库的表里只有 string 一列而且字段值都是 NULL。所以要另外进行一些处理,这在后面的另一篇文章(SSIS 中 Foreach 循环容器处理 XML 数据)里介绍。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于