我正在尝试使用OnHTTPBeforeCommand或OnHTTPDocument事件从TIdHTTPProxyServer获取发布数据,但一切都没用。 我怎么能这样做?
顺便说一下,我正在使用Indy 10,但其他解决方案(例如使用突触)会很酷。提前致谢。
答案 0 :(得分:1)
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
不公开对该数据的访问。它是从一个插座到另一个插座的直接传递。