【问题标题】:Restrict request to only ask for HTTP/1.0 [to prevent chunking error]限制请求只请求 HTTP/1.0 [防止分块错误]
【发布时间】:2016-10-15 10:57:27
【问题描述】:

我使用 Python 中的 Request 包从服务器收到错误 requests.exceptions.ChunkedEncodingError: ('Connection broken: IncompleteRead(0 bytes read)', IncompleteRead(0 bytes read))

我从 How to tell the HTTP server to not send chunked encoding 帖子中了解到,解决此问题的一种方法是告诉服务器不要发送分块编码,特别是通过在请求中指定 HTTP/1.0

如何使用 Requests 包执行此操作?

【问题讨论】:

标签: python python-requests


【解决方案1】:

您可以尝试设置Requests使用的httplib后端使用的HTTP版本。

在 Python 2 上,您可以这样做:

import httplib
httplib.HTTPConnection._http_vsn = 10
httplib.HTTPConnection._http_vsn_str = 'HTTP/1.0'

在 Python 3 中,httplib 被重命名为 http.client,所以你可以这样做

import http.client
http.client.HTTPConnection._http_vsn = 10
http.client.HTTPConnection._http_vsn_str = 'HTTP/1.0'

Requests 的 GitHub 上的Issue 2341 表明,至少有一个人这样做过——而且 Requests 绝对不支持它。特别是,该库将不努力确保只发送与 HTTP/1.0 兼容的标头,因此很可能会出现问题。

不支持使用 Requests 库设置 HTTP 协议版本的方法。

【讨论】:

    猜你喜欢
    • 2022-10-02
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多