检查 HTTP 请求中的表单数据

表单数据是用户通过与 HTML 表单中的元素(例如,文本输入框、按钮或复选框)交互而提供的信息。 该信息作为一系列名称和值对传输。 CICS® 可以扫描 HTTP 请求以选取表单字段,因此应用程序可以使用 CICS 命令获取数据,而无需接收和分析整个请求主体。

关于此任务

HTML 表单 说明有关表单和表单字段的更多信息。

应用程序可接收指定表单字段的值,也可浏览请求中包含的所有表单字段的名称和值。 如果您希望将数据转换到其他代码页以供应用程序使用,那么可以指定代码页转换选项。

使用 GET 方法时,Web 客户机在查询字符串中发送表单数据,而使用 POST 方法时,它在消息体中发送表单数据。 CICS 可以从其中任一位置抽取数据,因此您未指定使用的方法。 作为备用方法,如果在查询字符串中发送表单数据,那么可以使用 WEB EXTRACT 命令检索整个查询字符串。 检查 HTTP 请求的请求行 指示您如何执行此操作。

仅当 CICS 是 HTTP 服务器而不是 HTTP 客户机时, CICS 才会读取表单数据。

过程

  • 要获取 HTML 表单的特定字段的值,请使用 WEB READ FORMFIELD 命令。
    应用程序可以提供缓冲区,该缓冲区将接收值,或者,您也可以提供一个指针, CICS 将该指针设置为值的地址。 如果表单数据不包含具有指定名称的字段,那么 CICS 将返回 NOTFND 条件。
    在返回表单数据之前, CICS 会将其取消转义,并将 %xx 序列转换回原始字符。 请参阅 CICS Web Support 和非 HTTP 请求 以获取对此的说明。
  • 要浏览表单数据中的所有字段:
    1. 使用 WEB STARTBROWSE FORMFIELD 命令开始浏览字段。
    2. 使用 WEB READNEXT FORMFIELD 命令依次检索每个字段的名称和值。
      您的应用程序提供两个缓冲区:一个用于接收字段名称,另一个用于接收其内容。 当读取了所有字段时, CICS 将返回 ENDFILE 条件。
    3. 使用 WEB ENDBROWSE FORMFIELD 命令可在程序已检索所有相关字段时结束浏览。
  • CICS 对您接收的数据执行代码页转换。
    您可以在 WEB STARTBROWSE FORMFIELD 和 WEB READ FORMFIELD 命令上使用 CHARACTERSET 和 HOSTCODEPAGE 选项,以指定 Web 客户机和应用程序使用的代码页。
    1. 客户机应用程序对 GET 和 POST 方法使用的字符编码由 HTML 表单中的信息决定。 但是,该信息通常不包含在已提交的表单请求中,因此由应用程序使用 CHARACTERSET 选项来提供。 该信息必须符合相应 HTML 表单所确定的表单编码。 请参阅 如何确定客户机编码 以获取更多信息。
    2. HOSTCODEPAGE 选项指定应用程序使用的 CICS (主机) 代码页。 该代码页通常为 EBCDIC 代码页。 如果未指定代码页,那么将以 LOCALCCSID 系统初始化参数指定的 EBCDIC 代码页返回数据,前提是 CICS Web 界面支持指定的代码页。 否则, CICS 会将数据返回到缺省 EBCDIC 代码页 037。
    有关 CHARACTERSET 和 HOSTCODEPAGE 选项的更多信息,请参阅 WEB READ FORMFIELDWEB STARTBROWSE FORMFIELD 命令。