HTTPRequest 节点

本主题包含以下部分:

用途

使用 HTTPRequest 节点与 Web service 交互,将输入消息全部或部分用作发送到该服务的请求。在将消息传播到消息流中的后续节点前,您还可以配置该节点以便从 Web service 响应内容所增加的输入消息内容创建新的输出消息。

该节点会根据配置从输入消息的指定内容构造 HTTP 或 HTTP over SSL(HTTPS)请求,并将其发送到 Web service。它从 Web service 接收响应,并解析响应以包含在输出树中。如果配置要求,会生成 HTTP 头。

您可以在不包含 HTTPInput 或 HTTPReply 节点的消息流中使用此节点。

HTTPRequest 节点在以下消息域中处理消息:

  • MRM
  • XML
  • XMLNS
  • XMLNSC
  • JMSMap
  • JMSStream
  • MIME
  • BLOB
  • IDOC

HTTPRequest 节点在工作台中由以下图标表示:

HTTPRequest 节点图标

在消息流中使用此节点

HTTPRequest 可用于任何需要发送 HTTP 请求的消息流。最常见的示例为,调用 Web service 的消息流。有关 Web service 应用程序的信息,请参阅 Web Service 应用程序

处理错误

由于节点使用 TCP/IP 直接与外部服务交互,因此会遇到以下三种错误:

  1. 由 TCP/IP 生成的错误,例如,没有到主机的路由连接被拒绝

    如果节点检测到这些错误,植入附带接收到的错误信息的异常列表,并将输入消息不更改地路由到 failure 终端。

  2. Web 服务器返回的错误。这些错误的 HTTP 状态码在 100 到 299 之间。如果节点检测到错误,它会按照请求节点的“错误”选项卡上指定的属性将应答路由到节点的错误终端。

    当节点无法确定应答格式时,该应答会作为 BLOB 输出。如果尚未配置该节点来处理重定向,则带有重定向状态码(3xx)的消息也会按此方式进行处理。

HTTP 响应代码

HTTPRequest 节点将 100 系列状态码视作继续的响应、废弃当前响应并等待来自 Web 服务器的其他响应。

200 系列状态码被视作成功,并且会按照节点的不同选项卡上的设置(针对所生成的输出消息的格式),将响应路由到节点的 out 终端。

300 系列状态码用于重定向。如果选择了遵循重定向属性,则节点不会将请求重新发送到已接收请求中新指定的请求。如果未选择遵循重定向属性,则将该代码视为上述有关处理节点部分中描述的错误。

400 和 500 系列状态码表示错误,并视作上述有关处理错误部分中所描述的内容。

处理头

如果选择了用 Web service 响应替换输入消息属性或用错误替换输入属性,则输入消息的头(即,在消息到达 HTTPRequest 节点的 IN 终端时,属于该消息的头)不会使用离开 HTTPRequest 节点的消息进行传播。然而,如果指定了某个指定消息树中位置的属性,则传播输入消息的头。

包含了远程 Web service 所返回头的 HTTPResponse 头是从节点进行传播的消息中属性之后的第一个头。无论是否选择这些选项,情况都如此。因此,如果要将来自 HTTPRequest 节点的应答放到 MQ 队列,则必须使用这些头以使 MQMD 成为第一个头(在属性后)。

如果要用响应替换输入消息,可将输入消息的 MQMD 复制到 HTTPRequest 节点前的 Environment 树,然后在将其复制回 HTTPRequest 节点后的消息树中。如果要为响应指定位置以保留现有的输入消息头,则必须移动或除去 HTTP 响应头从而使 MQMD 成为第一个头。

下面是包含了除去 HTTPHeader 的 ESQL 的示例:
SET OutputRoot = InputRoot;
SET OutputRoot.HTTPResponseHeader = NULL;
以下示例中包含用于移动 HTTPHeader 的 ESQL 并因此保留了它所提供的信息:
SET OutputRoot = InputRoot;
DECLARE HTTPHeaderRef REFERENCE TO OutputRoot.HTTPResponseHeader;
DETACH HTTPHeaderRef;
ATTACH HTTPHeaderRef TO OutputRoot.MQMD AS NEXTSIBLING;

启用 HTTP GET

缺省情况下,HTTPRequest 节点在连接到远程 Web 服务器时,使用 HTTP POST 方法。要启用请求节点以代之使用 HTTP GET 方法,必须在输出本地环境树中设置一个字段,如以下示例所示:
SET OutputLocalEnvironment.Destination.HTTP.RequestLine.Method = 'GET';

配置 HTTPRequest 节点

当您将 HTTPRequest 节点的实例放入消息流后,便可对它进行配置。右键单击编辑器视图中的节点,然后单击属性。 将显示该节点的基本属性。

对于必须为其输入值的所有必需属性(没有定义缺省值的属性),在属性对话框上都会用星号作标记。

如下所示配置 HTTPRequest 节点:

  1. HTTPRequest 节点确定向 Web service 发送请求的 URL。必须设置以下三项中的一项,节点按显示顺序对其进行检查(即:第一个总是覆盖第二个,第二个覆盖第三个):
    1. 输入消息中 HTTPRequest 头的 X-Original-HTTP-URL
    2. 输入消息中的 LocalEnvironment.Destination.HTTP.RequestURL
    3. Web Service URL 属性

    前两项为您提供了每个输入消息在通过消息流时设置 URL 的动态方法。如果要使用这些选项中的任何一项,必须在消息流中将 Compute 节点包含在 HTTPRequest 节点之前,以便创建并初始化必需值。

    第三个选项提供了一个值,此值用于修订此节点中接收的每条消息。如果其他字段尚未创建或包含空值,必须设置该属性以包含所使用的缺省设置。如果任一字段包含了值,则忽略此属性设置。Web Service URL 属性必须包含有效的 URL,否则部署会失败。您还必须确保在 X-Original-HTTP-URL 或 LocalEnvironment.Destination.HTTP.RequestURL 中设置的值也是有效 URL;如果不是有效值,则节点生成异常且消息会传播到 failure 终端。

    如果 URL 以 http:// 开头,请求节点会向指定 URL 发出 HTTP 请求。如果 URL 以 https:// 开头,则请求节点会使用节点的 SSL 选项卡中指定的参数,向指定 URL 发出 HTTP over SSL(HTTPS)请求。

  2. 设置请求超时值。此处为节点等待来自 Web service 响应的时间长度。如果在此时间内接收到响应,则通过 out 终端将应答传播到其余的消息流。如果在此时间内未接受到响应,输入消息将通过 failure 终端传播(如果此终端已连接)。如果没有连接 failure 终端,并且在此时间内未接收到响应,则生成异常。
  3. HTTP 代理位置中,设置请求所发送到的代理服务器位置。
  4. 选中或清除遵循 HTTP 重定向复选框以指定节点如何处理 Web service 响应,这些响应的 HTTP 状态码从 300 到 399:
    • 如果您选中该复选框,则节点会遵循响应中提供的重定向,并将 Web service 请求重新发送到消息内容中包含的新 URL。
    • 如果您清除此复选框,则节点不会遵循所提供的重定向。响应消息将传播到错误终端。
  5. 选择 HTTP 版本。HTTP 版本可能的值为 1.01.1

    如果选择 HTTP/1.1,则还可使用 HTTP/1.1 保持活动。

  6. 如果计划使用 HTTP over SSL(HTTPS)请求,则选择 SSL 选项卡并设置 HTTPS 请求的值。
    • 指定要用于发出请求的协议。可使用以下操作:
      • SSL(缺省值)。它试图首先使用 SSLv3 协议进行连接,但允许握手退回到 SSLv2 协议,其中 SSLv2 协议受基本 JSSE 提供程序支持。
      • SSLv3。它仅试图使用 SSLv3 协议进行连接。不允许退回到 SSLv2。
      • TLS。它仅试图使用 TLS 协议进行连接。不允许退回到 SSLv3 或 SSLv2。

        请注意,SSL 连接的两端都必须同意要使用的协议,因此所选协议必须为远程服务器可接受的协议。

    • 指定允许的 SSL 密码。 该设置允许您指定单个密码(如 SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA)或一系列仅由连接使用的密码。该组密码必须包含一个或多个远程服务器接受的密码。 密码间使用逗号进行分隔。缺省值(空字符串)允许节点在 SSL 连接握手期间使用任何、全部或可用密码,这为成功进行 SSL 连接提供了最大范围。
  7. 在属性对话框导航器中选择“高级”,并为高级属性设定值,这些高级属性描述了 Web service 请求和响应结构和内容。
    1. 指定发送至 Web service 的请求消息的内容:
      • 如果您要将请求消息作为整个输入消息体,则保留所选的将整个输入消息用作请求复选框(这是其缺省设置)。

        如果您要请求消息包含输入消息的子集,则清除此复选框并完成属性树中的请求消息位置

      • 树中的请求消息位置中,输入起始位置,从这一位置将输入消息树的内容复制到请求消息。仅当您已经清除将整个输入消息用作请求属性时,才需要此属性。节点创建新请求消息并复制指定的输入消息的部分(不修改输入消息本身)。

        您可以输入任何有效的 ESQL 字段引用,包括引用内的表达式。例如,输入:

        InputRoot.XMLNS.ABC

        如果选中按要求使用所有输入消息复选框,则此属性将被忽略。

      在解析相应消息树内容以创建位流时,使用与输入消息体关联并存储在“属性”文件夹中的消息属性(域、集、类型和格式)。

    2. 在消息流中指定传播到下一个节点的输出消息内容:
      • 如果要将整个 Web service 响应消息作为输出消息进行传播,则选中以 web-service 响应替换输入消息复选框(这是缺省设置)。

        如果要将 Web service 响应消息包含在附带部分输入消息内容的输出消息中,则清除此复选框并选中属性选项树中的响应消息位置。如果清除此属性,则此节点会将输入消息复制到输出消息,并在指定位置以 Web service 响应消息覆盖输出消息内容(不修改输入消息)。

      • 树中的响应消息位置中,输入“输出消息树”的起始位置,此位置储存来自 Webservice 响应消息流的解析的元素。仅当您已清除以 web-service 响应替换输入消息属性时才要求此属性。

        您可以输入任何有效的 ESQL 字段引用,包括引用内的表达式,还包括新字段引用(在消息树中创建新节点以供响应)。例如,输入:

        OutputRoot.XMLNS.ABC.DEF
        Environment.WSReply

        如果选中以 web-service 响应替换输入消息复选框,则此属性将被忽略。

      当响应位流用以分析创建消息树内容时,将使用您在此节点“缺省”属性(如下描述)中指定的消息属性(域、集合、类型以及格式)。

    3. 如果您要节点生成为请求消息生成 HTTPRequestHeader,则保留所选的从输入生成缺省 HTTP 头复选框(这是缺省设置)。

      如果不希望此节点生成请求消息的 HTTPRequestHeader,则清除从输入消息中生成缺省 HTTP 头复选框(缺省设置为选中)。 如果要控制包含在请求消息中的 HTTPRequestHeader 的内容,则在消息流中此 HTTPRequest 节点之前包含一个 Compute 节点(此节点会将 HTTPRequestHeader 添加到输入消息),并清除此复选框。

      • 如果已选择了从输入消息中生成缺省 HTTP 头,并且输入消息包含 HTTPRequestHeader,则该节点会从输入 HTTPRequestHeader 中抽取除主机(如果输入消息中存在,请参阅下表))以外的 Web service 头,同时添加独特的 Web service 头。(如果已通过 HTTPInput 节点从 Web service 接受了输入消息,则可能存在 HTTPInputHeader。)

        如果 HTTPRequestHeader 或 HTTPInputHeader 中不包含以下表中的 Web service 头,也可进行添加。

        缺省值
        SOAPAction ""(空字符串)
        Content-Type text/xml; charset=utf-8
        Host 请求发送请求的主机名

        即便 HTTPRequestHeader 或 HTTPInputHeader 中不存在附带正确计算的值的头 Content-Length(可选),也可进行添加。

      • 如果已选择了从输入消息中生成缺省 HTTP 头,并且输入消息不包含 HTTPRequestHeader,则该节点会从 HTTPRequestHeader 中抽取除主机(如果输入消息中存在)外的 Web service。如果 HTTPRequestHeader 中不存在这些头,将添加附带缺省值的必须的 Web service 头。
      • 如果已清除了从输入消息中生成缺省 HTTP 头,并且输入消息包含一个 HTTPRequestHeader,则该节点在输入 HTTPRequestHeader 中抽取所有的 Web service 头。 不检查输入消息中是否存在 HTTPInputHeader,并且如果输入 HTTPRequestHeader 没有提供必须的 Web service 头,则不会另行添加。
      • 如果已经清除了从输入消息生成缺省 HTTP 头,并且输入消息不包括 HTTPRequestHeader,则将生成 Web service 头。该节点不检查输入消息中的 HTTPInputHeader,并且不添加任何必须的 Web service 头。请求消息不通过 HTTPRequestHeader 传播到 Web service。除非将 Web service 设置为处理消息内容,否则通常会引发由其生成的错误。
  8. 在属性对话框导航器中选择“错误”,并为各类属性设置值,这些属性可确定如何通过 Web service 处理错误消息。
    • 如果要将整个 Web service 错误消息作为输出消息进行传播,则选中以错误消息替换输入消息复选框(这是缺省设置)。

      如果要将 Web service 错误消息包含在附带部分输入消息内容的输出消息,则清除该复选框并完成属性错误消息位置。如果清除该属性,则节点将输入消息复制到输出消息,并在指定的位置用 Web service 错误消息覆盖输出消息内容(不修改输入消息本身)。

    • 错误消息位置中,输入“输出消息树”中的起始位置,此位置存储来自 Web service 错误消息位流的解析的元素。仅当您已经清除以错误消息替换输入值属性时才要求此属性。

      您可以输入任何有效的 ESQL 字段引用,包括引用中的表达式以及新字段引用(在消息树中创建新节点以供响应)。例如,输入:

      OutputRoot.XMLNS.ABC.DEF
      Environment.WSError

      如果您选择以错误消息替换输入值复选框,该属性将被忽略。

  9. 在属性对话框导航器中选择“缺省”,并为描述消息域、消息集、消息类型和消息格式的属性设置值,该节点用于确定如何解析由 Web service 返回的消息。

    如果由 Web service 返回错误消息,这些属性值将被忽略,并且该消息将通过 BLOB 解析器进行解析。

    • 消息域中,从下拉列表中选择正在使用的解析器名称。 可以从下列名称中选择:
      • MRM
      • XML
      • XMLNS
      • XMLNSC
      • JMSMap
      • JMSStream
      • MIME
      • BLOB
      • IDOC
    • 如果您使用的是 MRM 或 IDOC 解析器,则从消息集中的下拉列表中选择正确的消息集。当您选择 MRM 或 IDOC 作为域时,用可用消息集植入此列表。

      将 XML、XMLNS、XMLNSC、JMS、MIME 和 BLOB 解析器的消息集保留为空白。

    • 如果您使用的是 MRM 解析器,则从消息类型中的下拉列表中选择正确的消息。此列表是用所选的消息集中定义的消息填充的。

      将 XML、XMLNS、XMLNSC、 JMS、MIME、BLOB 和 IDOC 解析器的消息类型保留为空白。

    • 如果您使用的是 MRM 或 IDOC 解析器,则从消息格式的下拉列表中选择消息的格式。 此列表包含您为此消息集定义的所有物理格式。

      将 XML、XMLNS、XMLNSC、JMS、MIME 和 BLOB 解析器的消息格式保留为空白。

  10. 如果您要 MRM 解析器按照从消息集生成的字典验证消息的体,则在属性对话框导航器中选择“验证”。(如果消息传播到节点的 Failure 终端,则不进行验证。)

    有关更多详细信息,请参阅验证消息MRM 域中消息的验证属性

  11. 在属性对话框导航器中选择“一般消息选项”。缺省情况下,解析定时设置为按需解析。这会导致延迟验证,直至进行部分解析。如果将该选项更改为立即,则覆盖部分解析,并且会解析并验证消息中的所有内容;除了此时无法解析的那些组合为“选项”或“消息”的复杂类型。如果将该选项更改为完全解析,则将覆盖部分解析,并且会解析并验证消息中的所有内容;此时无法解析的组合为“选项”或“消息”的复杂类型会导致验证失败。
  12. 选择属性对话框导航器中的“描述”,以输入简短描述和/或详细描述。
  13. 单击应用在不关闭“属性”对话框的情况下对 HTTPRequest 节点进行更改。单击确定以应用更改,并关闭属性对话框。

    单击取消以关闭对话框,并废弃对属性所作的所有更改。

将 output 终端连接到另一个节点

将该节点的 out、error 或 failure 终端连接到该消息流中的另一个节点,以进一步处理消息、处理错误或将消息发送到其他目的地。如果未连接 error 终端,则废弃消息。如果未连接 failure 终端,则代理提供缺省错误处理,如处理消息流中的错误中所述。

终端和属性

在以下表中描述了 HTTPRequest 节点终端。

终端 描述
In 接受供节点处理的消息的输入终端。
Failure 在节点中进行处理期间检测到故障的情况下,消息路由到的输出终端。
Out 在成功完成 Web service 请求并在此消息流内要求进一步处理的情况下,消息路由到的输出终端。
Error 包含 200 到 299 范围外的 HTTP 状态码(如果您未设置属性遵循 HTTP 重定向,则包含重定向代码(3xx))的消息路由到的输出终端。

下表描述该节点的属性;标题为 M 的列表示属性是否是必需的(如果在未定义缺省值时必须输入值,则在属性对话框上以星号作标记),标题为 C 的列表示属性是否是可配置的(将消息流添加到 BAR 文件以部署此文件时可以更改该值)。

下表描述 HTTPRequest 节点的“基本”属性。

属性 M C 缺省值 描述
Web Service URL   Web service 的 URL。必须以 http://<hostname>[:<port>]/[<path>] 的格式提供该 URL,其中
  • 必须指定 http://<hostname>
  • <port> 的缺省值为 80。如果您指定值,则必须在端口号前包括 :
  • <path> 缺省值为 /。如果您指定值,则必须在路径前包括 /。
请求超时 120 节点等待来自 Web service 响应的时间(以秒为单位)。有效范围是 1 到(231)-1。您无法输入表示无限等待的值。
HTTP 代理位置   请求所发送到的代理服务器。其格式必须为 hostname:port
遵循 HTTP 重定向 已清除 是否遵循 HTTP 重定向。如果选中该复选框,则遵循重定向。如果清除该复选框,则不遵循重定向。
HTTP 版本 1.0 用于请求的 HTTP 版本。有效值为 1.01.1
启用 HTTP/1.1 保持活动 选择(如果 HTTP 版本为 1.1) 使用 HTTP/1.1 保持活动

下表描述 HTTPRequest 节点的 SSL 属性。

属性 M C 缺省值 描述
协议 SSL 发出 HTTPS 请求时使用的 SSL 协议。
允许的 SSL 密码   发出 SSL 请求时使用的一系列以逗号分隔的密码。缺省值空字符串表示使用所有可用的密码。

在以下表中描述了 HTTPRequest 节点高级属性。

属性 M C 缺省值 描述
将整个输入消息用作请求 选中 是否将整个输入消息体传递到 Web service。如果您选中该复选框,则执行此操作。如果您清除该复选框,则必须指定树中的请求消息位置
树中的请求消息位置 InputRoot 为发送到 Web 服务而创建的位流的起始位置。此属性采用 ESQL 字段引用的格式。
用 Web service 响应替换输入信息 选中 Web service 响应消息是否替换输入消息的副本作为创建的输出消息的内容。如果您选中该复选框,则执行此操作。如果您选中该复选框,则必须指定树中的响应消息位置
树中的响应消息位置 OutputRoot 来自 Web service 响应位流的经解析元素所存储的起始位置。此属性采用 ESQL 字段引用的格式。
从输入生成缺省 HTTP 头 选中 是否生成 HTTPRequestHeader。如果您选中该复选框,则执行此操作。如果 清除此复选框,则有效的 HTTPRequestHeader 必须在输入消息中存在。

下表描述 HTTPRequest 节点的“错误”属性。

属性 M C 缺省值 描述
用错误替换输入 选中 是否用错误消息内容替换输入消息内容。如果您选中该复选框,则执行操作。如果清除该复选框,则必须指定错误消息位置
错误消息位置 OutputRoot 来自 Web service 错误位流的经解析元素所存储的起始位置。此属性采用 ESQL 字段引用的格式。

下表描述 HTTPRequest 节点“缺省”属性。

属性 M C 缺省值 描述
消息域   将用于解析接收自 Web service 的响应消息的域。
消息集   定义响应消息的消息集的名称或标识。
消息类型   响应消息的名称。
消息格式   响应消息物理格式的名称。

下表描述 HTTPRequest 节点的“验证”属性。

请参阅MRM 域中消息的验证属性,以获取这些属性的完整描述。

属性 M C 缺省值 描述
验证 验证是否发生。有效值为内容和值内容继承
故障操作 异常 验证失败后将发生什么操作。只有将验证设置为内容内容和值,才可以设置该属性。有效值为用户跟踪本地错误日志异常异常列表
包含所有值约束 选中 无法编辑此属性。选中复选框所表示的缺省操作为内容和值验证中包括基本值约束检查。
固定 无法编辑此属性。

下表描述 HTTPRequest 节点的“一般消息选项”的属性。

属性 M C 缺省值 描述
解析计时 按需解析 该属性控制何时解析输入消息。有效值为按需解析立即解析完全解析

请参阅按需解析,以获取此属性的完整描述。

将 MQRFH2C 压缩解析器用于 MQRFH2 域 已清除 该属性控制 MQRFH2 头中是否使用 MQRFH2C 压缩解析器,而不是 MQRFH2 解析器。

下表描述 HTTPRequest 节点的“XMLNSC 解析器选项”的属性。

属性 M C 缺省值 描述
将 XMLNSC 压缩解析器用于 XMLNS 域 已清除 更新开始此属性控制 XMLNSC 压缩解析器是否用于 XMLNS 域中的消息。请注意,如果您设置该属性,则当输入 RFH2 头或缺省属性域是 XMLNS 时,连接到输出终端的节点中的 XMLNSC 下会显示消息数据。更新结束
混合内容保留方式 此属性控制当 XMLNSC 解析器遇到输入消息中的混合文本时,是否使用该解析器创建消息树中的元素。有效值为全部。选择全部表示为混合文本创建元素。选择表示忽略混合文本并且不创建元素。
注释保留方式 此属性控制当 XMLNSC 解析器遇到输入消息中的注释时,是否使用该解析器创建消息树中的元素。有效值为全部。选择全部表示为注释创建元素。选择表示忽略注释并且不创建元素。
处理指令保留方式 此属性控制当 XMLNSC 解析器遇到输入消息中的处理指令时,是否使用该解析器创建消息树中的元素。有效值为全部。选择全部表示为处理指令创建元素。选择表示忽略处理指令并且不创建元素。

下表描述 HTTPRequest 节点的“描述”属性。

属性 M C 缺省值 描述
简短描述   节点的简要描述。
详细描述   描述消息流中节点用途的文本。
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ac04595_