通过“HTTP 发布请求”活动进行压缩/解压

在运行时期间,HTTP 发布请求活动会向 HTTP Server 发送与 HTTP/HTTPS 1.1 协议兼容的 HTTP 请求。

注: HTTP 发布请求活动支持 gzip 或 deflate 格式的压缩/解压。它不支持公共 UNIX® 文件压缩格式(称为 compress)。

HTTP 发布请求活动的压缩/解压运行时行为取决于下列条件:

在下方以及运行时压缩/解压行为部分中提供的表内描述了这些条件对 HTTP 发布请求活动的压缩/解压运行时行为的影响。

压缩/解压端点支持

当 Integration Appliance 以压缩格式将第一个 HTTP 请求发送到 HTTP 端点 (HTTP Server) 时,Integration Appliance 会确定 HTTP 端点是否支持压缩,如果 HTTP Server 返回错误代码,指示 HTTP Server 不支持压缩或不支持指定的内容编码类型,那么 Integration Appliance 会以未压缩格式重新发送第一个请求,并且发送到此端点的所有后续请求都是以未压缩格式进行发送。此外,HTTP Server 发送的 HTTP 响应在由 Integration Appliance 接收时未解压。 

压缩/解压端点支持通过运行时压缩/解压行为部分中提供的表内标示为端点支持压缩?的第四列来表示。 

消息级别的内容编码和接受编码值

HTTP 请求中的内容编码头值可确定请求的主体是否处于压缩状态及其所用的编码类型。例如,如果内容编码等于 deflate,那么 Integration Appliance 将发送以 deflate 格式进行压缩的请求主体,如以下标为发送请求时的压缩行为的第一个表中的第二行以及下图所示。

请求中的接受编码头值可定义 HTTP 客户机在响应中接受的编码类型。 例如,如果在请求中接受编码等于 gzip,deflate,那么 HTTP Server 可将以 gzip 或 deflate 格式压缩的响应主体发送到 Integration Appliance(充当客户机),如下图中所示:
图 1.
缺省情况下,如果在 HTTP 发布请求活动的映射输入任务中未将任何内容映射到可选 httpheaders 输入参数,那么会创建缺省头集。例如,URL 头自动通过 HTTP 发布请求活动“配置”窗格中提供的值进行设置。

可以使用 HTTP 发布请求活动中映射输入任务的可选 httpheaders 输入参数内的名称/值对显式设置请求的接受编码和内容编码头值。 例如,要将内容编码设置为 deflate,请在可选 httpheaders 输入参数中设置以下名称/值对:

如果为请求的接受编码和内容编码头设置了不受支持的值或未设置任何值,那么将提供缺省值,如以下各表所示:

Integration Appliance 和 HTTP 服务器将使用请求中的接受编码和内容编码头值来确定压缩/解压行为。

设置活动级别的压缩/解压

缺省情况下,会在活动级别为 HTTP 发布请求活动打开压缩和解压。 您可以通过清除使用压缩/解压复选框在活动级别关闭压缩/解压。使用压缩/解压复选框在活动的配置任务中可用。运行时压缩/解压行为部分中提供的下列表内标示为使用压缩/解压复选框的第二列表示使用压缩/解压复选框的设置。

注: 在将来发行版中将不推荐对 HTTP 活动使用使用压缩/解压复选框。 在 HTTP 请求中使用内容编码和接受编码 HTTP 参数可以指定如何解压 HTTP 请求的主体并压缩 HTTP 响应的主体。

运行时压缩/解压行为

发送请求时的压缩行为部分中提供的第一个表描述 Integration Appliance 向 HTTP Server 发送 HTTP 请求时的压缩运行时行为。

传递到请求的接受编码头值部分中提供的第二个表描述传递到 HTTP 请求中的接受编码头值。

接收响应时的解压行为部分中提供的第三个表描述 Integration Appliance 从 HTTP Server 接收 HTTP 响应时的解压运行时行为。

发送请求时的压缩行为

下表描述 Integration Appliance 向 HTTP Server 发送 HTTP 请求时的压缩运行时行为。

“使用压缩/解压”复选框(活动级别) HTTP 请求中的内容编码值(消息级别) 端点支持压缩? 发送请求时的 Integration Appliance 压缩运行时行为
已选中 gzip、不设置或除 deflate 或 identity 之外的任何其他字符串 Integration Appliance 将发送以 gzip 格式进行压缩的请求主体。内容编码头在请求中设置为 gzip
已选中 deflate Integration Appliance 将发送以 deflate 格式进行压缩的请求主体。内容编码头在请求中设置为 deflate
已选中 identity Integration Appliance 将发送未经压缩的请求主体。内容编码头在请求中设置为 identity
已选中 值无关紧要 Integration Appliance 将发送未经压缩的请求主体。内容编码头在请求中设置为 identity
已清除 值无关紧要 值无关紧要 Integration Appliance 按原样(未更改)发送请求主体。内容编码头的当前值在请求中按原样传递。

 

传递到请求的接受编码头值

下表描述传递到 HTTP 请求中的接受编码头值。

“使用压缩/解压”复选框(活动级别) 初始接受编码值 端点支持压缩? 通过 HTTP 请求传递到服务器的接受编码值
已选中 gzip 接受编码头在请求中设置为 gzip
已选中 deflate 接受编码头在请求中设置为 deflate
已选中 gzip,deflate 接受编码头在请求中设置为 gzip,deflate
已选中 deflate,gzip 接受编码头在请求中设置为 deflate,gzip
已选中 identity 接受编码头在请求中设置为 identity
已选中 未设置或除 deflate、gzip 或 identity 之外的任何其他字符串 接受编码头在请求中设置为 gzip,deflate
已选中 值无关紧要 接受编码头的当前值在请求中按原样传递。
已清除 值无关紧要 值无关紧要 接受编码头的当前值在请求中按原样传递。

接收响应时的解压行为

下表描述 Integration Appliance 从 HTTP Server 接收 HTTP 响应时的解压运行时行为。

“使用压缩/解压”复选框(活动级别) HTTP 响应中的内容编码值(消息级别) 端点支持压缩? 接收响应时的 Integration Appliance 解压运行时行为
已选中 gzip Integration Appliance 使用 gzip 格式解压响应主体。
已选中 deflate Integration Appliance 使用 deflate 格式解压响应主体。
已选中 identity Integration Appliance 不会解压响应主体。
已选中 值不列在接受编码头中 Integration Appliance 记录错误,指示收到了非请求内容编码类型的响应数据。
已选中 值无关紧要 Integration Appliance 不会解压响应主体。内容编码头的当前值在响应中按原样传递。
已清除 值无关紧要 值无关紧要 Integration Appliance 不会解压响应主体。内容编码头的当前值在响应中按原样传递。