样本程序:以分块方式发送和接收 HTTP 请求

样本程序 DFH$WBCA(汇编语言)、DFH$WBCC (C) 和 DFH0WBCO(COBOL)演示了作为 HTTP 客户机的 CICS 如何以分段或分块的方式将请求发送到 HTTP 服务器,并接收分块形式的响应消息。 样本程序 DFH$WBHA(汇编语言)、DFH$WBHC (C) 和 DFH0WBHO(COBOL)演示了作为 HTTP 服务器的 CICS 如何以分块方式从 HTTP 客户机接收请求并发送分块形式的响应。

开始之前

样本程序在运行 CICS Web Support 的 CICS® 区域之间发送和接收请求。 客户机分块样本 DFH$WBCA、DFH$WBCC 和 DFH0WBCO 安装在 HTTP 客户机区域中,而服务器分块样本 DFH$WBHA、DFH$WBHC 和 DFH0WBHO 安装在 HTTP 服务器区域中。 例如,客户机样本 DFH$WBCA 会打开与其对应的服务器样本 DFH$WBHA 的会话。 DFH$WBHA 从 DFH$WBCA 接收分块请求,然后发送分块响应。 客户机样本 DFH$WBCA 将响应作为分块消息接收。

在使用样本程序之前,请遵循 配置 CICS Web Support 组件中描述的过程,将 CICS 区域设置为 HTTP 服务器。 如果 CICS 区域已设置并作为 HTTP 服务器运行,并且您有自己正确设计的 TCPIPSERVICE 定义,请不要再次安装样本 TCPIPSERVICE 定义 HTTPNSSL。

关于此任务

将 CICS 区域设置为 HTTP 服务器后,请完成以下步骤以使用分块样本程序:

过程

  1. 确定将作为 HTTP 客户机的 CICS 区域。
    要尝试使用样本程序,您有三个选项:
    • 您可以使用与服务器和客户机相同的 CICS 区域; 请求将与两个单独的 CICS 区域一样离开和进入该区域,并且结果相同。 在这种情况下,无需进一步的 CICS Web Support 设置,因为作为 HTTP 服务器运行的 CICS 区域也可以作为 HTTP 客户机运行。
    • 可以将已经针对 CICS Web Support 设置的其他 CICS 区域用作客户机。 而且,在这种情况下,无需进一步的 CICS Web Support 设置。
    • 可以将尚未针对 CICS Web Support 设置的其他 CICS 区域用作客户机。 在这种情况下,您必须执行一些基本 CICS Web Support 设置,如 步骤 2中所述。
  2. 可选: 如果要将其他 CICS 区域用作 HTTP 客户机,并且尚未为 CICS Web Support 设置该区域,请执行基本设置:
    1. 遵循 在 CICS(r) 区域中启用 TCP/IP 中的指示信息,对 CICS 区域启用 TCP/IP 支持。
      此过程包括设置 Communications Server 并通过 z/OS®建立对 DNS 或域名服务器的访问权。
    2. 为区域指定系统初始化参数 TCPIP=YES 以激活 CICS TCP/IP 服务。
    该设置使 CICS 区域作为 HTTP 客户机运行。
  3. 在设置为 HTTP 服务器的 CICS 区域中,为客户机区域发出其请求时所用的端口确定 TCPIPSERVICE 定义。
    选择用 HTTP 协议(但不使用 SSL)定义的任何端口,因此将 TCPIPSERVICE 定义指定为 PROTOCOL(HTTP),将 SSL 指定为 NO。 您可以选择任何适合的端口,因为服务器中用于访问服务器分块样本程序的样本 URIMAP 定义 DFH$URI4 与任何主机名和端口号匹配。
  4. 在 HTTP 客户机区域中,修改提供的样本 URIMAP 定义 DFH$URI3,这是在 DFH$WEB 资源定义组中提供的。 由于 DFH$WEB 是受保护的组,所以请将该定义复制到另一个组中以进行编辑。
    DFH$URI3 是一个使用属性为 CLIENT 的 URIMAP 定义。 它指定 URL 的某些组成部分,样本程序使用这些部分向 HTTP 服务器区域发出请求。
    1. 请勿更改 DFH$URI3 中指定为 HTTP 的方案(SCHEME 属性)。
    2. DFH$URI3 指定虚主机名(HOST 属性)。 修改该属性以插入实际的主机名:
      • 指定分配给 HTTP 服务器区域的 z/OS 映像的主机名。 如果您不知道主机名,那么可以使用在第 3 步中选择的 TCPIPSERVICE 定义中的 IP 地址。
      • 如果您选择的 TCPIPSERVICE 定义用于 80(这是 HTTP 的常用端口号)以外的其他端口号,请在 TCPIPSERVICE 定义中在主机名之后指定端口号,并用冒号将主机名和端口号隔开。
    3. 请勿将 DFH$URI3 中指定为 /chunking_sample_application 的路径 (PATH 属性) 更改为 DFH$URI4所匹配的路径。
  5. 在 HTTP 客户机区域中,安装您所修改的 URIMAP 定义 DFH$URI3。
  6. 在 HTTP 客户机区域中,安装 PROFILE 定义 DFH$WBPF,这是在 DFH$WEB 资源定义组中提供的。
  7. 用所需的语言翻译并编译客户机和服务器样本程序。
    在接收分块样本程序时,不会对其进行编译。 SDFHSAMP 库提供了样本程序。 以下是样本程序及其相应事务的名称:
    样本类型 语言 Program 事务
    客户机分块样本 汇编程序 DFH$WBCA WBCA
    客户机分块样本 C DFH$WBCC WBCC
    客户机分块样本 COBOL DFH0WBCO WBCO
    服务器分块样本 汇编程序 DFH$WBHA -
    服务器分块样本 C DFH$WBHC -
    服务器分块样本 COBOL DFH0WBHO -
  8. 在 HTTP 服务器区域中,为您选择的服务器分块样本程序安装 PROGRAM 资源定义,并安装提供的样本 URIMAP 定义 DFH$URI4。
    资源定义是在 DFH$WEB 资源定义组中提供的。
    1. 如果选择 C 或 COBOL 样本,请在安装所提供的样本 URIMAP 定义 DFH$URI4 之前先对它进行修改。
      由于 DFH$WEB 是受保护的组,所以请将该定义复制到另一个组中以进行编辑。
    2. 将 DFH$URI4 指定的程序(PROGRAM 属性)从 DFH$WBHA(汇编语言分块样本程序)更改为您首选的服务器分块样本程序。
    3. 安装您所修改的 URIMAP 定义 DFH$URI4。
  9. 在 HTTP 客户机区域中,为所选的客户机分块样本程序安装 PROGRAM 资源定义及对应的 TRANSACTION 资源定义。
    资源定义是在 DFH$WEB 资源定义组中提供的。
  10. 在 HTTP 客户机区域中,为您所选的客户机分块样本运行事务。
    当样本程序成功地将所有这四块消息和两个头的尾部发送到 HTTP 服务器时,它就会将参考消息发送到终端。 同时还会显示一条消息,确认已接收消息。 如果任何一个块发送失败,那么会提供错误消息。 实际 HTTP 请求和响应的内容则不会显示出来。
  11. 在 HTTP 服务器区域中,您选择的服务器分块样本将由对应的客户机分块样本调用。
    当样本程序成功地将所有这四块消息和两个头的尾部发送到正在等待的 HTTP 客户机时,它会将参考消息发送到终端。 如果任何一个块发送失败,那么会提供错误消息。 实际 HTTP 请求和响应的内容则不会显示出来。
  12. 当您完成样本程序的使用后,出于安全性考虑,请禁用 URIMAP 定义 DFH$URI3 和 DFH$URI4,卸载样本 TCPIPSERVICE 定义 HTTPNSS(如果正在使用的话)。