这里有一个例子来处理HTTP请求的主体: http://twistedmatrix.com/documents/12.2.0/web/howto/client.html#auto4
此处的描述说,一旦发出GET请求,则必须读取正文或连接将保持打开状态:
要记住的一件重要事情是身体只会被阅读 从Response.deliverBody调用后的连接。这也是 意味着连接将保持打开,直到完成为止(和 身体阅读)。因此,一般来说,任何与身体的反应都必须具有此功能 使用deliverBody读取正文。如果申请不感兴趣 身体,它应该发出HEAD请求或使用协议 立即在其传输上调用stopProducing。
但是如果标题指示错误,那么就不需要读取正文。在这种情况下,如何在不打开连接的情况下忽略主体?
答案 0 :(得分:0)
你不能忽视身体是什么,它是由远程网络服务器发送的。如果您不读它,它将不会使Web服务器停止发送它(直到TCP缓冲效果)。
您有3个选项:
HEAD
请求。twisted.web
,而是编写自己的协议连接到远程服务器的HTTP端口,发出GET请求并在读取标题后调用loseConnection()
(我强烈建议您不要这样做)。请注意,即使您致电loseConnection()
,服务器很可能已将响应发送给您,并且它正在您的操作系统的网络缓冲区中等待。只有在这是一个长轮询连接(如 Comet )的情况下,才能在读取完整响应之前中断HTTP连接。您也可以破解twisted.web
的传输并删除制作人(在这种情况下loseConnection()
会起作用,如果您想要这条路线,我建议您阅读twisted.web
代码