为请求编写 HTTP 头

对于客户端HTTP 请求, CICS® 根据消息所使用的 HTTP自动提供基本消息所需的 HTTP。 您可能需要将更多 HTTP 头添加到您的请求。

关于此任务

如果消息需要, CICS 会自动创建这些 HTTP 标头:
  • ARM 相关因子
  • 连接
  • Content-Type(由 CICS 编写,但在需要复杂头时,可由客户机应用程序提供)
  • Content-Length
  • Date
  • Expect
  • 主机
  • 服务器 (自动创建取决于系统初始化参数 HTTPSERVERHDR)
  • TE(由 CICS 编写,但是可能添加了更多实例)
  • Transfer-Encoding
  • User-Agent (自动创建取决于系统初始化参数 HTTPUSRAGENTHDR)
  • WWW-Authenticate

其中一些标题仅适用于HTTP CICS。 这些标题的创建环境在 HTTP CICS 网页支持的头文件引用 中进行了描述。 除了 Content-Type 和 TE 头外,您不能编写自己版本的 CICS 提供的请求头。

通常, CICS 为请求提供的头是针对基本 HTTP/1.1 消息编写的,以符合 HTTP/1.1 规范。 (CICS 以提供的 HTTP/1.1 为 HTTP 版本发送您的请求。) 您可能为了诸如以下目的要添加更多 HTTP 头:
  • 声明服务器的首选项,例如,Accept-Encoding、Accept-Language
  • 发出条件请求,例如,If-Match、If-Modified-Since
  • 对服务器或代理提供基本认证信息,Authorization、Proxy-Authorization

要获取与您决定用于消息的任何其他 HTTP 头相关的需求,请检查您正在遵从的 HTTP 规范。 请参阅 HTTP

注意: 如果 HTTP包含标准字母和数字字符以外的字符,则必须以代码页037提供。

HTTP 为要发送的邮件 之前 添加 WEB SEND 标题,然后发送 命令。 然而,如果您编写的头要在已分块消息上作为尾部头发送,那么将应用以下进程。 请注意这几点:

过程

  • 对于所有命令,使用 SESSTOKEN 选项为连接本次使用指定会话令牌。
  • 对要添加到消息的每个头使用 WEB WRITE HTTPHEADER 命令。
    确保以您正在遵从的 HTTP 规范所描述的格式为每个头指定名称和值。
    该命令添加单个头,您可以重复该命令以添加更多头。 如果您编写已为请求编写的头,那么除了现有头外, CICS 还会将新头添加到请求中。 只在 HTTP 规范声明可以重复头的地方重复头。
    CICS 存储发送请求时准备添加到请求的头。
  • 如果您不知道服务器的 HTTP 版本,并且想要使用标头来请求执行操作,而该操作可能无法在低于 HTTP/1.1 级别的服务器上正确执行,请使用 WEB EXTRACT 命令来检查服务器的 HTTP 版本。
    在执行受版本影响的操作之前,无需一直检查服务器的 HTTP 版本。 请参考所采用的 HTTP 级别的规范,看看是否可以用版本不匹配的服务器来执行操作。 例如,接收方可能会忽略一些不适合的 HTTP 头。 您可以在无需检查的情况下尝试请求,并处理来自服务器的错误响应。
  • 如果您想HTTP使用日期和时间戳(例如,If-Modified-Since标头),可以使用 FORMATTIME命令
    命令中的 STRINGFORMAT 选项用于将当前日期和时间(ABSTIME 格式)或应用程序生成的日期和时间转换为适合在 Web 上使用的日期和时间戳记格式。 某些与 CICS 通信的 Web 客户机或服务器可能不接受其他日期和时间戳记格式。
  • 如果您使用分块传输编码发送 HTTP 请求,并希望在分块消息的末尾包含尾部报头,请参考 发送 HTTP 请求或响应,并使用分块传输编码
    在发送消息的第一块前,必须写尾部头。 在 WEB SEND 命令之后为第一个块写入HTTP都被视为尾部标头。
  • 确保您的应用程序执行用户所写的头暗示的任何操作。