从TIdHTTPProxyServer获取POST数据

时间:2013-02-17 23:04:20

标签: delphi indy indy10

我正在尝试使用OnHTTPBeforeCommand或OnHTTPDocument事件从TIdHTTPProxyServer获取发布数据,但一切都没用。 我怎么能这样做?

顺便说一下,我正在使用Indy 10,但其他解决方案(例如使用突触)会很酷。

提前致谢。

1 个答案:

答案 0 :(得分:1)

POST数据在OnHTTPBeforeCommand事件中不可用,因为它尚未从套接字中读取。该事件中只有HTTP标头可用。

{p} POST数据在OnHTTPDocument事件中可用,但仅限于以下条件:

  1. POST请求使用非零Content-Length标头(因为TIdHTTPProxyServer尚不支持Transfer-Encoding标头来处理压缩/分块的HTTP消息)

  2. {li>

    TIdHTTPProxyServerContext.TransferMode事件退出时,tmFullDocument属性为OnHTTPBeforeCommand。默认情况下,TransferMode设置为与TIdHTTPProxyServer.DefaultTransferMode属性相同的值,默认为tmFullDocument

  3. 客户端将POST请求直接发送到TIdHTTPProxyServer,指定完整的URL作为目标。如果客户端改为直接向CONNECT发送TIdHTTPProxyServer请求以建立到目标服务器的隧道,然后通过隧道将POST请求发送到目标服务器(例如,在建立时) HTTPS请求的SSL会话)TIdHTTPProxyServer不公开对该数据的访问。它是从一个插座到另一个插座的直接传递。