2

根据http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.3客户端必须等待 100(继续)状态,然后才能进行 POST(在需要此标头的 HTTP 1.1 服务器上)。

我不明白 Python 怎么能做到这一点。例如:

conn = httplib.HTTPConnection(url)
conn.putrequest('POST', page)
conn.putheader(...)
conn.putheader('Expect', '100-continue')
conn.endheaders()

现在,我看不到其他选项然后发送数据:

conn.send(data)

在这种情况下,当我要求回复时出现错误:

error: [Errno 10053] An established connection was aborted by the software in your host machine

我怎样才能要求状态 100,以便我可以发送数据?

4

1 回答 1

3

我认为不httplib支持这一点(非常好);请参阅此请求票中的讨论,特别是

并且可以以破坏 httplib 的方式提前关闭套接字

该评论的作者 Augie Fackler (durin42) 也提到了他自己的httpplus图书馆

快速浏览一下源代码表明确实可以Expect: 100-Continue正确处理:

# handle 100-continue response
hdrs, body = self.raw_response.split(self._end_headers, 1)
http_ver, status = hdrs.split(' ', 1)
if status.startswith('100'):
    self.raw_response = body
    self.continued = True
    logger.debug('continue seen, setting body to %r', body)
    return
于 2013-03-22T12:33:14.573 回答