WEB OPEN

CICS® 打开HTTP连接,使其充当 HTTP。

语法

WEB OPEN

读取语法图跳过可视语法图WEB OPENURIMAP( data-value)主机CERTIFICATE( data-value)CODEPAGE( data-value)SESSTOKEN( data-area)HTTPVNUM( data-area)HTTPRNUM( data-area)不推荐的选项不支持
主机
读取语法图跳过可视语法图HOST( data-value)HOSTLENGTH( data-value)PORTNUMBER( data-value)SCHEME( CVDA)
6.1 6.2 已弃用的选项
参见 CIPHERS
读取语法图跳过可视语法图 CIPHERS( data-value) NUMCIPHERS( data-value)
6.3 不支持
参见 CIPHERS
读取语法图跳过可视语法图 CIPHERS( data-value) NUMCIPHERS( data-value)
不支持CIPHERSNUMCIPHERS 不再作为新编译的可用选项。

条件: IOERR、INVREQ、LENGERR、NOTFND、NOTAUTH 和 TIMEDOUT

此命令是线程安全的。

NOHANDLERESPRESP2是常用选项,可添加到所有 EXEC CICS 命令中以处理错误条件。 命令语法图和选项说明中没有明确包含这些选项。 有关这些常用选项和 EXEC CICS 命令语法的信息,请参阅 EXEC CICS 命令格式和编程注意事项.

描述

WEB OPEN 使应用程序能够通过 CICS 网络支持与互联网上 HTTP指定主机建立连接。 打开连接后,应用程序可以向服务器发送 HTTP 客户机请求并接收来自服务器的响应。

在打开连接时,您可以指定包含有关该连接 URL 的信息的 URIMAP 资源。 您可以直接在 WEB OPEN 命令上指定此信息,而不是使用 URIMAP 资源。 但是,使用 URIMAP 资源具有以下优势:
  • 系统管理员可以管理对连接端点的任何更改,这样当您请求的 URL 发生更改时,您无需重新编译自己的应用程序。
  • 如果您正在使用 TLS,则可以在 URIMAP 资源中指定 TLS 客户端证书或密码套件规范文件,以便系统管理员管理对这些证书和代码的任何更改。
  • 您可以选择使 CICS 在使用后保持使用 URIMAP 资源打开的连接处于打开状态,并将这些连接放在池中以供另一个应用程序或同一应用程序的另一个实例复用。 只有在指定设置了 SOCKETCLOSE 属性的 URIMAP 资源时,连接池才可用。 有关连接池性能优势的更多信息,请参阅 HTTP性能的连接池》。
  • 对于使用同一 URIMAP 的后续出站 Web 请求, WEB OPEN URIMAP 可以使用建立初始连接后保存在 URIMAP 中的高速缓存 IP 地址,从而消除不必要的 DNS 查找。

    成功建立到主机的初始连接后, WEB OPEN 将使用已解析的 IP 地址更新 URIMAP。 对于使用同一 URIMAP 的后续 WEB OPEN 请求,将使用在 URIMAP 中高速缓存的已解析 IP 地址。 如果使用高速缓存的 IP 地址的连接失败,那么 WEB OPEN 将运行 DNS 查找,并在成功连接时使用 IP 地址更新 URIMAP。 如果要重置或除去 URIMAP 中保存的高速缓存 IP 地址,请禁用 URIMAP ,然后重新启用该 URIMAP 以强制 CICS 运行 DNS 查找。 如果您有多个引用同一主机(HOST)的URIMAP,那么只需禁用并重新启用其中一个URIMAP,即可为所有URIMAP重置缓存的IP地址。

  • 同样, WEB OPEN URIMAP 也可以使用主机的缓存 HTTP 信息。 当您使用 HTTPVNUMHTTPRNUM 选项运行 WEB OPEN 以及使用 ACTION(EXPECT)CHUNKING 选项发出 WEB SEND 时,这很有用。 CICS 在打开连接时获取的主机 HTTP信息将被缓存,并用于后续使用相同URIMAP的出站请求,从而减少 HTTP 请求。
  • 证书仅在安装URIMAP时验证一次,而不是在每个 WEB OPEN 命令时验证。
  • 使用 URIMAP 可以实现出站连接池,从而减少为每个 WEB OPEN 创建新连接的开销。

有关为客户端请求创建URIMAP资源的更多信息,请参阅 CICS 创建URIMAP资源作为 HTTP

WEB OPEN 命令驱动 XWBOPEN 用户出口,如果需要,该用户出口可使与服务器的连接通过代理服务器。

注:
  • 如果连接请求未在死锁超时间隔内完成(在启动用户应用程序的事务的 TRANSACTION 定义的 DTIMOUT 属性中指定),CICS向应用程序返回 TIMEDOUT 响应。 如果将 DTIMOUT 设置为 NO,或者允许其使用缺省值 NO,表示应用程序准备无限期等待。
  • 如果EXEC CICS WEB OPEN发行HTTPVNUM或者HTTPRNUM选项,一个EXEC CICS WEB CONVERSE发生,因此请求须遵守RTIMOUT而不是DTIMOUT

选项

CERTIFICATE(数据值)
指定在 TLS 握手期间用作 TLS 客户机证书的 X.509 证书的标签。 证书标签最多可以由 32 个字母数字字符组成。 此选项仅在指定 HTTPS时有效。 如果指定了 HTTPS ,但省略了 CERTIFICATE 选项,则使用在密钥环中为 CICS 定义的默认证书。 证书必须保存在 RACF® 数据库的钥匙圈中。 有关更多信息,请参阅 手动构建密钥环

每个 WEB OPEN 命令都会通过 ESM 验证证书标签。 建议使用 URIMAP 代替,以避免这种开销。

CIPHERS(数据值 )——不支持
指定用于 TLS 连接的密码。 对于新连接和编译,将除去此选项。
6.1 6.2 如果省略 CIPHERS 选项和 URIMAP 选项,但 TLS 对于连接处于活动状态,则会发生以下情况:
  • 如果MAXTLSLEVEL低于 TLS13 ,则 CICS 使用默认的两位数密码。
  • 如果 MAXTLSLEVEL 等于 TLS13 或更高,则 CICS 使用从 defaultciphers.xml file 获取的默认密码列表。

6.3 如果省略了 CIPHERS 选项和 URIMAP 选项,但连接使用了 TLS, CICS 会使用从 defaultciphers.xml 文件中获取的默认密码列表。

CODEPAGE(数据值)
指定适用于应用程序的代码页。 代码页名称最多可以包含 8 个字母数字字符。 缺省值是本地 CICS 区域的缺省代码页,如 LOCALCCSID 系统初始化参数中所指定。 此连接期间将应用代码页。 当服务器HTTP做出响应时,如果请求了转换(这是默认设置), CICS 会在将请求正文传递给应用程序之前将其转换为该代码页。

此代码页名称的标准 CICS 格式由使用 3-5 十进制数字编写的代码页号 (或更一般的 CCSID) 组成,必要时使用尾部空格填充到 8 个字符。 对于少于 3 位数字的代码页 37,标准格式是 037。 CICS 还接受范围为 1-65535 的最多 8 位数 (以尾部空格填充) 的任何十进制数作为代码页名称,即使它不是标准格式也是如此。

HOST(数据值)
指定要连接到的服务器的主机名。 您可以使用 WEB PARSE URL 命令从已知的 URL提取这些信息,也可以使用 INQUIRE URIMAP SPI命令从现有的URIMAP定义中提取这些信息。 您可以指定 URIMAP 选项以直接从现有 URIMAP 定义使用此信息,在这种情况下,不需要 HOST 选项。 只有当您指定 URIMAP 选项时,客户端 HTTP 连接才能被集中起来重复使用;使用 HOST 选项不会启用连接池,即使您从URIMAP定义中提取信息也是如此。

如果在HTTP连接中使用传输层安全(TLS), CICS 将在TLS握手期间在服务器名称指示(SNI)扩展中传递主机名。 这样 CICS 就可以使用 TLS 通信与虚拟主机进行通信,而该服务器支持多个使用单个 IP 地址的虚拟主机。 另请参阅 CICS 网络支持基础知识:虚拟主机

字符主机名, IPv4 地址或 IPv6 地址可以表示主机名。 如果指定 IPv6 地址 (或解析为 IPv6 地址的主机名) ,请确保您正在双模 (IPv4 和 IPv6) 环境中运行,并且您要与之通信的客户机或服务器也在双模 (IPv4 和 IPv6) 环境中运行。

有关 IPv6的更多信息,请参阅 了解 IPv6 和 CICS

您可以多种格式指定 IPv4 和 IPv6 地址。 有关 IP 地址的信息,请参阅 IP 地址

如果需要端口号,那么不得将端口号包含在 HOST 选项中。 请改为使用 PORTNUMBER 选项。

可接受的字符:

字母数字字符,连字符 (-) ,冒号 (:) 或句点 (.)

冒号 (:) 只能在 IP 地址中使用。 不能在字符主机名中使用冒号 (:)。

HOSTLENGTH(数据值)
将主机名的长度指定为全字二进制值。 如果您使用 WEB PARSE URL 命令解析 URL ,则返回此信息。 您可以指定 URIMAP 选项以直接从现有 URIMAP 定义使用此信息,在这种情况下,不需要 HOSTLENGTH 选项。
HTTPRNUM(数据区)
返回服务器的 HTTP 版本的发行版号(以半字二进制值的形式)。 (HTTPVNUM 返回版本号。) 例如,如果服务器处于 HTTP/1.0 级别,那么 HTTPRNUM 将返回 0。
HTTPVNUM(数据区)
返回HTTP版本号,以半字节二进制值表示。( HTTPRNUM 返回版本号。) 例如,如果服务器处于 HTTP/1.0 级别,那么 HTTPVNUM 将返回 1。

如果您指定了 HTTPVNUMHTTPRNUM 选项, CICS 在打开与服务器的连接时,会获取 HTTP。 如果服务器在响应此请求时未提供 HTTP 版本信息,或者版本低于 1.0 CICS 假定其处于 HTTP/1.0 级别。

如果您必须检查 HTTP ,以确认应用程序在首次请求之前或期间的计划操作是否成功,请指定这些选项。 依赖于 HTTP 版本的操作包括:
  • 编写 HTTP 标头,请求服务器执行低于 HTTP/1.1操作
  • 使用 HTTP 方法,可能不适合低于 HTTP/1.1 级别的服务器
  • 使用分块的传输编码
  • 发送由管道传送的序列的请求

CICS 为了获取 HTTP而发出的额外 HTTP 请求会影响性能,因此如果现阶段没有必要,请不要指定这些选项。 当服务器发出第一个响应时,您可以通过使用 WEB EXTRACT 命令来获取这些信息。 要避免此性能影响,请使用 URIMAP 资源来管理连接。

NUMCIPHERS(数据值) ——不支持
请参阅 CIPHERS 以获取详细信息。
PORTNUMBER(数据值)
以全字二进制值的形式指定端口号。 指定不是指定方案的缺省值的端口号。 对于 HTTP,缺省端口号为 80;对于 HTTPS,缺省端口号为 443。 您可以使用 WEB PARSE URL 命令从已知的 URL提取端口号信息,也可以使用 INQUIRE URIMAP SPI命令从现有的URIMAP定义中提取端口号信息。 您可以指定 URIMAP 选项以直接从现有 URIMAP 定义使用此信息,在这种情况下,不需要 PORTNUMBER 选项。 只有当您指定 URIMAP 选项时,客户端 HTTP 连接才能被集中起来重复使用;使用 PORTNUMBER 选项不会启用连接池,即使您从URIMAP定义中提取信息也是如此。
方案 (cvda)
指定用于连接到服务器的方案,可以使用 SSL ,也可以不使用 SSL。 CVDA 值如下:
HTTP
HTTP 协议,不带 SSL。
HTTPS
HTTPS 协议,即带有 SSL 的 HTTP。 如果使用 HTTPS ,则必须为SSL启用 CICS。

您可以使用 WEB PARSE URL 命令从已知的 URL提取这些信息,也可以使用 INQUIRE URIMAP SPI命令从现有的URIMAP定义中提取这些信息。 您可以指定 URIMAP 选项以直接从现有 URIMAP 定义使用此信息,在这种情况下,不需要 SCHEME 选项。 只有当您指定 URIMAP 选项时,客户端 HTTP 连接才能被集中起来重复使用;使用 SCHEME 选项不会启用连接池,即使您从URIMAP定义中提取信息也是如此。

SESSTOKEN(数据区)
返回会话令牌,这是一个8字节的二进制值,用于唯一标识此应用程序CICS 和 HTTP之间连接的使用。 会话令牌必须用于与此连接相关的所有 CICS 命令。 更多信息,请参阅关于会话令牌使用的会话令牌。
URIMAP(数据值)
指定用于提供以下信息的 URIMAP 定义的名称(最多包含 8 个字符,混合大小写):
  • 用于连接到服务器的方案。
  • 要连接到的服务器上的主机名。
  • 端口号(如果需要)。
  • URI 的路径部分,表示您要访问的服务器上的资源。 此路径成为与此连接相关的 WEB SENDWEB CONVERSE 命令的缺省路径,但可以通过在 WEB SENDWEB CONVERSE 命令上指定另一个路径来覆盖此路径。
  • 使用 URIMAP 资源打开的合用连接的到期周期。 当您在 URIMAP 定义中指定使用 SOCKETCLOSE 属性的到期时间段,并在 WEB OPEN 命令中命名 URIMAP 资源时,将启用连接池。
  • 用作 TLS 客户机证书的 X.509 证书的标签 (如果需要)。
  • 可用于连接的密码套件规格文件。

URIMAP定义必须将 CICS 作为 HTTP ,并指定USAGE(CLIENT)。

注: 如果指定了 URIMAP 选项,请勿指定 CERTIFICATEHOSTHOSTLENGTHPORTNUMBERPORTLENGTHSCHEME 选项。

条件

17 IOERR
RESP2 值:
38
代理错误。
42
套接字错误。 存在连接问题。
16 INVREQ
RESP2 值:
14
代码页不正确。
22
在初始 HTTP中使用 OPTIONS 方法时收到不正确的块。
23
不正确的客户机证书。
40
方案不正确。
41
在初始 HTTP 请求中使用 OPTIONS 方法时,服务器关闭了连接。
48
主机选项的格式不正确。
63
URIMAP 对象不可用。
66
处理 XWBOPEN 出口时发生错误。
67
响应内容不符合 HTTP 格式。 生成此错误是因为存在语法问题。
96
不支持SSL。
137
将拒绝所有请求的密码代码。
138
端口号大于 65535。
144
一个或多个 Web 命令参数不正确。
158
defaultciphers.xml 需要提供默认密码列表。 文件不存在或未包含 1.3。 初始化期间会发出信息 DFHWB0112 ,指出 defaultciphers.xml 文件存在问题。
159
6.3 连接不安全。 产生该错误的原因是所使用的 URIMAP 指定了 ATTLS(AWARE),或者 CICS 在运行时使用了 SECURETCPIP=YES。
22 LENGERR
RESP2 值:
21
主机长度不正确。
13 NOTFND
RESP2 值:
20
名称服务器未解析主机名,或者主机选项的格式不正确。
39
未知代理。
61
未找到指定的 URIMAP 对象。
70 NOTAUTH
RESP2 值:
100
被安全出口禁止的主机名。
124 TIMEDOUT
RESP2 值:
62
接收套接字时出现超时。