本主题包含以下部分:
使用 HTTPRequest 节点与 Web service 交互,将输入消息全部或部分用作发送到该服务的请求。在将消息传播到消息流中的后续节点前,您还可以配置该节点以便从 Web service 响应内容所增加的输入消息内容创建新的输出消息。
该节点会根据配置从输入消息的指定内容构造 HTTP 或 HTTP over SSL(HTTPS)请求,并将其发送到 Web service。它从 Web service 接收响应,并解析响应以包含在输出树中。如果配置要求,会生成 HTTP 头。
您可以在不包含 HTTPInput 或 HTTPReply 节点的消息流中使用此节点。
HTTPRequest 节点在以下消息域中处理消息:
HTTPRequest 节点在工作台中由以下图标表示:
HTTPRequest 可用于任何需要发送 HTTP 请求的消息流。最常见的示例为,调用 Web service 的消息流。有关 Web service 应用程序的信息,请参阅 Web Service 应用程序。
由于节点使用 TCP/IP 直接与外部服务交互,因此会遇到以下三种错误:
如果节点检测到这些错误,植入附带接收到的错误信息的异常列表,并将输入消息不更改地路由到 failure 终端。
当节点无法确定应答格式时,该应答会作为 BLOB 输出。如果尚未配置该节点来处理重定向,则带有重定向状态码(3xx)的消息也会按此方式进行处理。
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 成为第一个头。
SET OutputRoot = InputRoot; SET OutputRoot.HTTPResponseHeader = NULL;
SET OutputRoot = InputRoot; DECLARE HTTPHeaderRef REFERENCE TO OutputRoot.HTTPResponseHeader; DETACH HTTPHeaderRef; ATTACH HTTPHeaderRef TO OutputRoot.MQMD AS NEXTSIBLING;
SET OutputLocalEnvironment.Destination.HTTP.RequestLine.Method = 'GET';
当您将 HTTPRequest 节点的实例放入消息流后,便可对它进行配置。右键单击编辑器视图中的节点,然后单击属性。 将显示该节点的基本属性。
对于必须为其输入值的所有必需属性(没有定义缺省值的属性),在属性对话框上都会用星号作标记。
如下所示配置 HTTPRequest 节点:
前两项为您提供了每个输入消息在通过消息流时设置 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)请求。
如果选择 HTTP/1.1,则还可使用 HTTP/1.1 保持活动。
请注意,SSL 连接的两端都必须同意要使用的协议,因此所选协议必须为远程服务器可接受的协议。
如果您要请求消息包含输入消息的子集,则清除此复选框并完成属性树中的请求消息位置。
您可以输入任何有效的 ESQL 字段引用,包括引用内的表达式。例如,输入:
InputRoot.XMLNS.ABC
如果选中按要求使用所有输入消息复选框,则此属性将被忽略。
在解析相应消息树内容以创建位流时,使用与输入消息体关联并存储在“属性”文件夹中的消息属性(域、集、类型和格式)。
如果要将 Web service 响应消息包含在附带部分输入消息内容的输出消息中,则清除此复选框并选中属性选项树中的响应消息位置。如果清除此属性,则此节点会将输入消息复制到输出消息,并在指定位置以 Web service 响应消息覆盖输出消息内容(不修改输入消息)。
您可以输入任何有效的 ESQL 字段引用,包括引用内的表达式,还包括新字段引用(在消息树中创建新节点以供响应)。例如,输入:
OutputRoot.XMLNS.ABC.DEF或
Environment.WSReply
如果选中以 web-service 响应替换输入消息复选框,则此属性将被忽略。
当响应位流用以分析创建消息树内容时,将使用您在此节点“缺省”属性(如下描述)中指定的消息属性(域、集合、类型以及格式)。
如果不希望此节点生成请求消息的 HTTPRequestHeader,则清除从输入消息中生成缺省 HTTP 头复选框(缺省设置为选中)。 如果要控制包含在请求消息中的 HTTPRequestHeader 的内容,则在消息流中此 HTTPRequest 节点之前包含一个 Compute 节点(此节点会将 HTTPRequestHeader 添加到输入消息),并清除此复选框。
如果 HTTPRequestHeader 或 HTTPInputHeader 中不包含以下表中的 Web service 头,也可进行添加。
头 | 缺省值 |
---|---|
SOAPAction | ""(空字符串) |
Content-Type | text/xml; charset=utf-8 |
Host | 请求发送请求的主机名 |
即便 HTTPRequestHeader 或 HTTPInputHeader 中不存在附带正确计算的值的头 Content-Length(可选),也可进行添加。
如果要将 Web service 错误消息包含在附带部分输入消息内容的输出消息,则清除该复选框并完成属性错误消息位置。如果清除该属性,则节点将输入消息复制到输出消息,并在指定的位置用 Web service 错误消息覆盖输出消息内容(不修改输入消息本身)。
您可以输入任何有效的 ESQL 字段引用,包括引用中的表达式以及新字段引用(在消息树中创建新节点以供响应)。例如,输入:
OutputRoot.XMLNS.ABC.DEF或
Environment.WSError
如果您选择以错误消息替换输入值复选框,该属性将被忽略。
如果由 Web service 返回错误消息,这些属性值将被忽略,并且该消息将通过 BLOB 解析器进行解析。
将 XML、XMLNS、XMLNSC、JMS、MIME 和 BLOB 解析器的消息集保留为空白。
将 XML、XMLNS、XMLNSC、 JMS、MIME、BLOB 和 IDOC 解析器的消息类型保留为空白。
将 XML、XMLNS、XMLNSC、JMS、MIME 和 BLOB 解析器的消息格式保留为空白。
有关更多详细信息,请参阅验证消息和MRM 域中消息的验证属性。
单击取消以关闭对话框,并废弃对属性所作的所有更改。
将该节点的 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,其中
|
|
请求超时 | 是 | 否 | 120 | 节点等待来自 Web service 响应的时间(以秒为单位)。有效范围是 1 到(231)-1。您无法输入表示无限等待的值。 |
HTTP 代理位置 | 否 | 是 | 请求所发送到的代理服务器。其格式必须为 hostname:port。 | |
遵循 HTTP 重定向 | 否 | 否 | 已清除 | 是否遵循 HTTP 重定向。如果选中该复选框,则遵循重定向。如果清除该复选框,则不遵循重定向。 |
HTTP 版本 | 否 | 是 | 1.0 | 用于请求的 HTTP 版本。有效值为 1.0 和 1.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 解析器遇到输入消息中的混合文本时,是否使用该解析器创建消息树中的元素。有效值为无和全部。选择全部表示为混合文本创建元素。选择无表示忽略混合文本并且不创建元素。 |
注释保留方式 | 否 | 否 | 无 | 此属性控制当 XMLNSC 解析器遇到输入消息中的注释时,是否使用该解析器创建消息树中的元素。有效值为无和全部。选择全部表示为注释创建元素。选择无表示忽略注释并且不创建元素。 |
处理指令保留方式 | 否 | 否 | 无 | 此属性控制当 XMLNSC 解析器遇到输入消息中的处理指令时,是否使用该解析器创建消息树中的元素。有效值为无和全部。选择全部表示为处理指令创建元素。选择无表示忽略处理指令并且不创建元素。 |
下表描述 HTTPRequest 节点的“描述”属性。
属性 | M | C | 缺省值 | 描述 |
---|---|---|---|---|
简短描述 | 否 | 否 | 节点的简要描述。 | |
详细描述 | 否 | 否 | 描述消息流中节点用途的文本。 |