Delphi w Indy 10:idHTTPRequest POST总是HTTP 1.0,如何使它成为HTTP 1.1?

时间:2014-12-09 21:33:46

标签: delphi indy

我们正在向Web服务发出POST请求。

工作正常。

但是,我们注意到请求总是HTTP 1.0,这导致我们的Web服务器拒绝gzip响应。

如果请求是HTTP 1.1,则响应被gzip压缩。

我们如何正确地要求Indy 10发出HTTP 1.1 POST请求?

谢谢!

2 个答案:

答案 0 :(得分:11)

hoKeepOrigProtocol选项包含在HTTPOptions属性集中(将其设置为True)。除了将ProtocolVersion属性设置为pv1_1(这是默认值)。

TIdCustomHTTP.Post方法代码中,有一条解释当前行为的注释:

  

目前发布POST时,IdHTTP会自动设置   协议到版本1.0独立于它最初的值。   这是因为有些服务器不遵守RFC   全程。特别是,他们不尊重发送/不发送   期望:100-Continue标题。直到找到最佳解决方案   这不会破坏RFC,我们会将POSTS限制为1.0版。

以下几行是对版本1.0的更改,其中包含以下注释:

// If hoKeepOrigProtocol is SET, it is possible to assume that the developer
// is sure in operations of the server
if not (hoKeepOrigProtocol in FOptions) then begin
  if Connected then begin
    Disconnect;
  end;
  FProtocolVersion := pv1_0;
end;

如果您hoKeepOrigProtocol中包含HTTPOptions选项,则会跳过上述代码(版本不会更改)。

答案 1 :(得分:-1)

只需要写:

idHTTP.HTTPOptions:= [hoKeepOrigProtocol];