我们正在向Web服务发出POST请求。
工作正常。
但是,我们注意到请求总是HTTP 1.0,这导致我们的Web服务器拒绝gzip响应。
如果请求是HTTP 1.1,则响应被gzip压缩。
我们如何正确地要求Indy 10发出HTTP 1.1 POST请求?
谢谢!
答案 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];