【问题标题】:Python requests: chunked post requestPython 请求:分块发布请求
【发布时间】:2020-01-21 13:44:34
【问题描述】:

我正在尝试通过带有headers["Transfer-encoding"] = "chunked" 的请求模块发送发布请求,但我正在回复:

<BODY><h2>Bad Request - Invalid Content Length</h2><hr><p>HTTP Error 400. There is an invalid content length or chunk length in the request.</p>

我正在发送一个 json 字符串。还给出了headers["Content-Type"] = "application/json"。 有人知道我是否缺少某些设置吗?也许我应该在某个地方设置块大小?

分析附加到响应的请求标头,我实际上得到了一个不同于零的内容长度标头。

我还尝试从 json 字符串创建自定义生成器,并将其作为 data= 传递给 post 方法,但它似乎只是挂在那里(也在给定的 timeout= 上方)。

【问题讨论】:

    标签: python-3.x python-requests chunked-encoding


    【解决方案1】:

    您的错误表明您没有正确创建请求(这是 4xx 错误,而不是表示服务器问题的 5xx)。 Transfer-Encoding: chunked 用于分块发送数据。当您的消息正文包含未指定数量的块并且您将它们发送到让我们说 - 流时。我建议阅读this

    每个块都应该在数据前面有它的大小。例如:

    HTTP/1.1 200 OK 
    Content-Type: text/plain 
    Transfer-Encoding: chunked
    
    9\r\n
    Some data\r\n 
    6\r\n
    Python\r\n
    

    如果您想使用 python requests 模块发送分块请求。您可能需要一个生成器方法。请参阅this。信息如此之少,我无法为您提供更多帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      • 2014-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多