我正在尝试使用 OnHTTPBeforeCommand 或 OnHTTPDocument 事件从 TIdHTTPProxyServer 获取发布数据,但一切都没用。我怎样才能做到这一点?
顺便说一句,我使用的是 Indy 10,但其他解决方案(例如突触)会很酷。
提前致谢。
POST
事件中的数据不可用OnHTTPBeforeCommand
,因为尚未从套接字中读取它。在该事件中只有 HTTP 标头可用。
POST
事件中的数据可用OnHTTPDocument
,但仅在以下条件下可用:
该POST
请求使用非零Content-Length
标头(因为TIdHTTPProxyServer
尚不支持Transfer-Encoding
标头来处理压缩/分块的 HTTP 消息)。
该TIdHTTPProxyServerContext.TransferMode
属性是tmFullDocument
事件OnHTTPBeforeCommand
退出的时间。默认情况下,设置为与属性TransferMode
相同的值,这是默认情况下。TIdHTTPProxyServer.DefaultTransferMode
tmFullDocument
客户端将POST
请求直接发送到TIdHTTPProxyServer
,指定一个完整的 URL 作为目标。如果客户端直接发送CONNECT
请求TIdHTTPProxyServer
以建立到目标服务器的隧道,然后POST
通过隧道将请求发送到目标服务器(例如,在为 HTTPS 请求建立 SSL 会话时),TIdHTTPProxyServer
则不会公开对该数据的访问。它是从一个插座到另一个插座的直接通路。