编写 HTTP 请求

对于HTTP CICS® ,您可以使用 WEB SEND 命令或 WEB CONVERSE 命令发出请求。 WEB CONVERSE 命令将 WEB SEND 命令和 WEB RECEIVE 命令上提供的选项组合在一起,以便您可以使用单个命令发出请求并接收响应。

开始之前

在发送请求之前,使用 WEB WRITE HTTPHEADER 命令为请求添加任何其他 HTTP 标头,如为请求编写 HTTP中所述。

关于此任务

您可以以块 (分块的传输编码) 发送请求,也可以发送由管道传送的请求序列,如 发送由管道传送的请求序列中所述。

发出 WEB SENDWEB CONVERSE 命令,如以下过程中所述。

过程

  1. 使用 SESSTOKEN 选项为连接的本次使用指定会话令牌。
  2. 指定请求HTTP (OPTIONS、GET、HEAD、PATCH、POST、PUT、DELETE或TRACE),参考 CICSHTTP参考
    该方法告诉服务器对您的请求执行何种操作。 如需更详细的指导,请查阅 HTTP 中列出的您正在使用的 HTTP。 CICS 以 HTTP/1.1 发送您的请求。
  3. 为服务器上所需的资源指定路径信息。
    缺省值是任何 URIMAP 定义中提供的路径,您在该连接的 WEB OPEN 命令中引用了该定义。 通过使用 URIMAP 选项指定可以从中获取路径的另一个 URIMAP 定义,可以指定备用路径。 (新的 URIMAP 定义必须为当前连接指定正确的主机名。) 也可以使用 PATH 和 PATHLENGTH 选项来提供路径信息。
  4. 使用 QUERYSTRING 和 QUERYSTRLEN 选项为您的请求指定任何查询字符串。
  5. 为 HTTP 请求及其长度指定任何实体主体。
    CICS 网络支持HTTP 方法参考可告诉您何时适合使用请求正文。
    如果需要请求主体,那么主体内容可以从 CICS 文档,使用 CICS DOCUMENT 接口并指定 DOCTOKEN 选项来标识文档,也可以从缓冲区的内容来指定 FROM 选项。 请参阅 HTTP实体体的生成 ”。
  6. 使用 MEDIATYPE 选项为您正在提供的任何实体主体指定介质类型。
    对于使用 PATCH , POST 和 PUT 方法 (需要主体) 的请求,需要指定 MEDIATYPE 选项。 对于具有其他方法的请求(无主体内容),不需要 MEDIATYPE 选项。
  7. 根据需要指定代码页转换。
    对于作为 HTTP CICS ,默认设置是转换请求正文,除非它具有非文本媒体类型。
    • 如果请求主体 需要代码页转换,请根据您是使用 WEB SEND 命令还是 WEB CONVERSE 命令来指定相应的转换选项,以便 CICS 不会转换请求主体。
    • 如果需要代码页转换,那么 ISO-8859-1 是大多数服务器可接受的缺省值。 如果缺省 ISO-8859-1 字符集不适合,请指定适合服务器的字符集。
  8. 如果要使用 Expect 头来测试服务器是否接受请求,那么为 ACTION 选项指定 EXPECT。
    此设置使 CICS 发送具有请求行和请求头的 Expect 头,并在将消息体发送到服务器之前等待 100-Continue 响应。 如果接收到除 "100-继续" 以外的响应,那么 CICS 将通知应用程序并取消发送。 如果在等待一段时间后未收到响应,那么 CICS 仍将发送消息体。
    低于 HTTP/1.1 的服务器不支持 Expect 头。 如果 CICS 还不知道服务器的 HTTP 版本,那么 CICS 会在发出您的请求之前请求版本号。 如果 Expect 头不适用,那么 CICS 会发送不带该头的请求。
  9. 可选: 如果此请求是您要向此服务器发出的最后一个请求,那么根据您是否正在使用连接池,您可能想要请求服务器关闭连接:
    1. 如果未使用此连接的连接池,可以为 CLOSESTATUS 选项指定 CLOSE。 使用此选项, CICS 会在请求上写入 Connection: close 头,或者对于处于 HTTP/1.0 级别的服务器,省略 Connection: keep-Alive 头。 指定该选项意味着服务器可以在发送最后一个响应后立即关闭它的连接。 此行为对于 Web 客户机不是必需的,但如果您确定不希望保持连接处于可用状态以供复用,这是最好的方法。
    2. 如果使用了此连接的连接池,不要指定 CLOSESTATUS 选项。 如果指定 CLOSESTATUS(CLOSE),服务器将关闭连接且将无法合用此连接。
    使用具有 SOCKETCLOSE 属性集的 URIMAP 资源打开连接时,将启用连接池。
  10. 如果您想使用分块传输编码将请求正文作为一系列分块发送,请遵循使用分块传输编码发送 HTTP或响应中的附加说明。
    在以下情况下,不支持分块传输编码:
    • 低于 HTTP/1.1 的服务器
    • WEB CONVERSE 命令
    • CICS 文档 (DOCTOKEN 选项)

结果

CICS 将请求行 HTTP头和请求正文组合在一起,并将请求发送到服务器。