转载

MobileFirst Platform Foundation 7.0 新手入门,第 4 部分

概述

通过使用 IBM MobileFirst Platform Foundation HTTP 适配器,您可发送 GET 或 POST HTTP 请求并从响应标头和正文中检索数据。HTTP 适配器适用于 RESTful 和基于 SOAP 的服务,可读取 RSS 源等结构化 HTTP 来源的内容。

您可使用简单的服务器端 JavaScript 代码轻松地自定义 HTTP 适配器。例如,如有必要,您可设置服务器端过滤。被检索的数据可以是 XML、HTML、JSON 或纯文本格式。

适配器使用 XML 进行配置,以定义适配器属性和过程。也可选择使用 XSL 过滤已收到的记录和字段。

  • 创建适配器
  • 适配器 XML 结构
  • JavaScript 实现
  • XSL 转换过滤
  • 创建基于 SOAP 的服务请求
  • 服务发现向导
  • 示例应用程序

创建适配器

CLI

在项目的目录中,使用  mfp add adapter  并按照交互式说明操作。

Studio

MobileFirst Platform Foundation 7.0 新手入门,第 4 部分 MobileFirst Platform Foundation 7.0 新手入门,第 4 部分

在 MobileFirst Studio 中,创建一个适配器并选择  HTTP Adapter  类型。这会创建一种标准的 HTTP 适配器结构。

适配器 XML 结构

设置和元数据都存储在适配器 XML 文件中。您可使用 Studio 中的  Design  或  Source  编辑器,或者使用您最喜爱的 XML 编辑器来修改适配器 XML 文件。

MobileFirst Platform Foundation 7.0 新手入门,第 4 部分

要编辑适配器 XML 文件,您必须:

  • 将协议设置为 HTTP 或 HTTPS。
  • 将 HTTP 域设置为 HTTP URL 的域部分。
  • 设置 TCP 端口。

在 connectivity 元素下声明所需的过程。

点击查看代码清单

关闭 [x]

<wl:adapter name="HTTPAdapter"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xmlns:wl="http://www.ibm.com/mfp/integration"   xmlns:http="http://www.ibm.com/mfp/integration/http">    <displayName>HTTPAdapter</displayName>    <description>HTTPAdapter</description>    <connectivity>      <connectionPolicy xsi:type="http:HTTPConnectionPolicyType">        <protocol>http</protocol>        <domain>rss.cnn.com</domain>        <port>80</port>          <connectionTimeoutInMilliseconds>30000</connectionTimeoutInMilliseconds>        <socketTimeoutInMilliseconds>30000</socketTimeoutInMilliseconds>        <maxConcurrentConnectionsPerNode>50</maxConcurrentConnectionsPerNode>        <!-- The following properties are used by the adapter's key manager for choosing specific certificate from the keystore.        <sslCertificateAlias></sslCertificateAlias>        <sslCertificatePassword></sslCertificatePassword>        -->             </connectionPolicy>    </connectivity>    <procedure name="getStories"/>       <procedure name="getStoriesFiltered"/>       </wl:adapter> 

JavaScript 实现

各个过程在适配器 JavaScript 文件中实现。服务 URL 用于调用过程。

该 URL 的某些部分是不变的;例如 http://example.com/。在 XML 文件中声明这些内容。URL 的其他部分可使用参数;也就是说,在运行时替换为提供给 MobileFirst 过程的参数值。

以下 URL 部分可参数化。

  • path 元素
  • 查询字符串参数
  • 分段

参阅用户文档中的“HTTP 适配器的 connectionPolicy 元素”主题,了解适配器的高级选项,如 cookie、标头和编码。

在 JavaScript 文件中,使用与 XML 文件中相同的过程名称。调用过程所需的强制参数是  method、path 和  returnedContentType。可在运行时对过程进行参数化。

function getFeeds() {    var input = {     method : 'get',     returnedContentType : 'xml',     path : "rss.xml"   };    return WL.Server.invokeHttp(input);  } 

要调用一个 HTTP 请求,可使用  WL.Server.invokeHttp  方法。提供一个输入参数对象,它必须指定:

  • HTTP 方法:GET、POST、PUT、DELETE

  • 返回的内容类型:XML、JSON、HTML 或  plain

  • 服务  path

  • 查询参数(可选)

  • 请求正文(可选)

  • 转换类型(可选)

参阅用户文档中的“WL.Server.invokeHttp”主题,查看完整的选项列表。

XSL 转换过滤

您可向已收到的数据应用 XSL 转换,例如过滤数据。要应用 XSL 转换,可在过程调用的输入参数中指定转换选项。

function getFeedsFiltered() {    var input = {     method : 'get',     returnedContentType : 'xml',     path : "rss.xml",     transformation : {    type : 'xslFile',    xslFile : 'filtered.xsl'    }    };      return WL.Server.invokeHttp(input);  } 

创建基于 SOAP 的服务请求

您可使用  WL.Server.invokeHttp  方法创建一个  SOAP  信封(envelope),并且可直接发送该信封。

要在 HTTP 适配器中调用基于 SOAP 的服务,必须将 SOAP XML 信封编码到请求正文中。将 XML 编码到 JavaScript 中很简单:只需使用  E4X,这是官方规定的 JavaScript 1.6 部分。您可使用此技术编码任何类型的 XML 文档,而不仅仅是 SOAP 信封。

如果收到有关 SOAP 信封的错误消息,可禁用 JavaScript 验证程序。单击  Project > Properties > Builders  并取消选中 JavaScript Validator。

使用 JavaScript 创建一个 SOAP 信封。可以将 JavaScript 代码和变量插入到 SOAP XML 中。在运行时会评估这些附加代码。

点击查看代码清单

关闭 [x]

var request =     <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">       <soap:Body>         <CelsiusToFahrenheit xmlns="http://www.w3schools.com/webservices/">           <Celsius>{celsiusTemp}</Celsius>         </CelsiusToFahrenheit>       </soap:Body>     </soap:Envelope>;

WL.Server.invokeHttp(options)  方法用于调用一个 SOAP 服务请求。

Options 对象必须包含以下属性:

  • 一个  method  属性:通常是  POST
  • 一个  returnedContentType  属性:通常是  XML
  • 一个  path  属性:一个服务路径
  • 一个  body  属性:content(SOAP XML 作为字符串)和  contentType
var input = {   method: 'post',   returnedContentType: 'xml',   path: '/webservices/tempconvert.asmx',   body: {     content: request.toString(),     contentType: 'text/xml; charset=utf-8',   },  };  var result = WL.Server.invokeHttp(input); 

服务发现向导

使用 MobileFirst Studio,您可通过 Discover Back-end Services 工具来从以下服务自动生成适配器,从而缩短开发时间:

  • IBM Business Process Manager
  • RESTful
  • SAP
  • WSDL
  1. 右键单击 MobileFirst 项目中的 services 文件夹并选择  Discover back-end services,然后选择一种服务类型。
  2. MobileFirst Platform Foundation 7.0 新手入门,第 4 部分
  3. 添加要使用的服务位置,并选择您要将哪个服务添加到适配器。

  4. 对要添加的每个服务重复此过程。这些服务将添加到同一个适配器中。

    MobileFirst Platform Foundation 7.0 新手入门,第 4 部分

有关更多信息,请参阅用户文档中使用服务发现向导生成适配器的主题。

示例应用程序

单击下载该 Studio 项目。

正文到此结束
Loading...